Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.045 c
15-1160810236
dimonf
2006-10-14 11:17
2006.11.05
Прочитай и задумайся


3-1157410788
Strech
2006-09-05 02:59
2006.11.05
фильтр по датам в Access


15-1160890676
Kair+
2006-10-15 09:37
2006.11.05
Вопрос по C++


3-1157621718
NotGooDP
2006-09-07 13:35
2006.11.05
Триггеры в MsSQL


1-1159007734
Дмитрий В
2006-09-23 14:35
2006.11.05
Как записать байт в lpt порт





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский