Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Представление строки как последовательности байтов..   Найти похожие ветки 

 
pathfinder   (2006-10-23 18:44) [0]

Добрый вечер.
Подскажите пожалуйста, как представить строку в виде последовательности байтов?
Т.е. например текстовый файл можно с помощью Stream.ReadBuffer, а если исходный текст надо взять не из файла, а из string?


 
Dmitrij_K   (2006-10-23 18:48) [1]

Pointer(String)^
@String[1]
PChar(String)


 
Джо ©   (2006-10-23 18:54) [2]

Stream.Read(S[1],Length(S));


 
GanibalLector ©   (2006-10-23 18:55) [3]


 var Line:String;
     I:Integer;
begin
 Line:="1234567890";
 for I:=1 to Length(Line) do
  Memo1.Lines.Add(IntToHex(Byte(Line[I]),2));
end;


ТипО : Byte(переменная_String[..])


 
Ketmar ©   (2006-10-23 18:56) [4]

>[2] Джо(c) 23-Oct-2006, 18:54
>Stream.Read(S[1],Length(S));
неа. if s <> "" then Stream.Read(S[1],Length(S));. %-)


 
Джо ©   (2006-10-23 19:00) [5]

> [4] Ketmar ©   (23.10.06 18:56)
> >[2] Джо(c) 23-Oct-2006, 18:54
> >Stream.Read(S[1],Length(S));
> неа.

Вот же ж. Буду и я "буквалистом". Сказано ж, "представить строку в виде последовательности байтов". А ежели нет байтов, то и "представлять" нечего. Не считая того обстоятельства, что строка и так есть "последовательность байтов" и представлять ничего не надо... :о)


 
Ketmar ©   (2006-10-23 19:03) [6]

>[5] Джо(c) 23-Oct-2006, 19:00
ну тогда давай вспомним, что в AnsiString есть ещё reference counter, который тоже может входить в "последовательность байтов". и тогда наш код вообще напрочь неверен. %-)


 
Джо ©   (2006-10-23 19:10) [7]

> [6] Ketmar ©   (23.10.06 19:03)

Reference counter фигня, там еще поле длины есть. Да, нужно код переписывать с отрицательным смещением и писать в стрим сразу весь гамуз :)


 
pathfinder   (2006-10-23 19:10) [8]

Тут суть вот в чем. Мне было надо, чтобы зашифровать содержимое этой строки xor-ом. Было замечено, что если работать со строкой как с последовательностью символов, то в случае, если на выходе получается код какого-нибудь символа типа конец строки, то происходит облом. А если обрабатывать текст побайтово, то вроде все ок.. С файлами я использую TFileStream, а со строками значит TStringStream надо?


 
Ketmar ©   (2006-10-23 19:11) [9]

>[7] Джо(c) 23-Oct-2006, 19:10
>Reference counter фигня, там еще поле длины есть.
ну я ж не мог обо всём сразу сказать! надо было и тебе что-то оставить. %-)


 
Джо ©   (2006-10-23 19:13) [10]

> [8] pathfinder   (23.10.06 19:10)

Привел-бы ты код или хотя бы людское его описание. Ничего не понятно, честно слово.


 
Ketmar ©   (2006-10-23 19:14) [11]

>[8] pathfinder 23-Oct-2006, 19:10
>работать со строкой как с последовательностью символов, то
>в случае, если на выходе получается код какого-нибудь
>символа типа конец строки, то происходит облом.
ни разу не происходит. %-) отлично всё работает. "облом" происходит при попытке загрузить такой файл стандартными средствами типа "TStrings.LoadFromFile()" (каковые используются в TMemo сотоварищи).
по-уму -- не лучше ли сделать наследника от TStream, который обеспечивает "прозрачное" шифрование, и подсовывать его в метод "LoadFromStream()"?


 
pathfinder   (2006-10-23 19:19) [12]


> ни разу не происходит. %-) отлично всё работает. "облом"
> происходит при попытке загрузить такой файл стандартными
> средствами типа "TStrings.LoadFromFile()" (каковые используются
> в TMemo сотоварищи).
> по-уму -- не лучше ли сделать наследника от TStream, который
> обеспечивает "прозрачное" шифрование, и подсовывать его
> в метод "LoadFromStream()"?

а мне полюбому этот текст потом надо грузить стандартными средствами:(
я хочу шифровать пароли, которые будут прописаны в ини-файле..
как же тогда лучше сделать?


 
Ketmar ©   (2006-10-23 19:24) [13]

>[12] pathfinder 23-Oct-2006, 19:19
>как же тогда лучше сделать?
сочинить алгоритм, который не позволит появляться символам с кодом меньше пробела.


 
Anatoly Podgoretsky ©   (2006-10-23 19:28) [14]

Если текст складывать с XOR то он перестает быть текстом и использовать текстовые функции к нему неправильно.


 
pathfinder   (2006-10-23 19:42) [15]


> Anatoly Podgoretsky ©   (23.10.06 19:28) [14]
> Если текст складывать с XOR то он перестает быть текстом
> и использовать текстовые функции к нему неправильно.

Как же тогда быть? Шифровать смещением? Или использовать готовый алгоритм? Есть ли какой-нибудь алгоритм, чтобы не надо было долго разбираться и была более менее приличная стойкость шифра?


 
Ketmar ©   (2006-10-23 19:48) [16]

>[15] pathfinder 23-Oct-2006, 19:42
"более менее приличная стойкость шифра" никак не сочетается с твоей задачей.


 
pathfinder   (2006-10-23 19:51) [17]


> >[15] pathfinder 23-Oct-2006, 19:42
> "более менее приличная стойкость шифра" никак не сочетается
> с твоей задачей.

ну тогда пусть менее чем приличная)


 
Ketmar ©   (2006-10-23 20:07) [18]

>[17] pathfinder 23-Oct-2006, 19:51
>ну тогда пусть менее чем приличная)
[13] %-)

например, прибавляй 1 ко всем символам кроме #255.


 
Anatoly Podgoretsky ©   (2006-10-23 20:25) [19]


> Как же тогда быть? Шифровать смещением? Или использовать
> готовый алгоритм? Есть ли какой-нибудь алгоритм, чтобы не
> надо было долго разбираться и была более менее приличная
> стойкость шифра?

Дело не в этом, все равно любой алгоритм приведет к тому же вопросу.
Если ты хочешь работать с результатом как с текстом, то надо использовать одну из транспортных упаковок, наприме Base64, Hex, UrlEncode и так далее.



Страницы: 1 вся ветка

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.029 c
15-1161033290
Ученик чародея
2006-10-17 01:14
2006.11.05
Американский ученый опасается, что инопланетяне взломают Интернет


2-1160983161
Dr. Genius
2006-10-16 11:19
2006.11.05
Drag n Drop для файлов из проводника с использованием OnDragOver


2-1161588260
mike ilin
2006-10-23 11:24
2006.11.05
работа с компонентами


15-1160722370
IMHO
2006-10-13 10:52
2006.11.05
Охотники за мифами Windows Vista


3-1157530066
DelphiLexx
2006-09-06 12:07
2006.11.05
OnSetText на Lookup поле - возникают проблемы