Здравствуйте.
У меня есть два вопроса. Я прошу вас не объяснять мне, как примерно это делается, а привести, если это не очень сложно, уже готовый код. спасибо заранее. итак, две задачи:
1. Нужна функция-криптограф и функция-декриптограф. Есть несколько объектов типов string и TStrings, и все их нужно зашифровать. Хотелось бы, чтобы шифровка производилась в зависимости от числа, сообщаемого функции. Таким образом, функция-криптограф для строки, имея аргументами строку и число, должна вернуть уже зашифрованную строку. А функция-декриптограф, имея аргументами зашифрованную строку и то же самое число, возвращала расшифрованную строку. То же самое для Tstrings.
2. Нужны функции, устанавливающая однозначное соответствие между строками до 5 символов и числами. Таким образом, получив в качестве аргумента эту строку, она должна возвращать число.
Еще раз спасибо заранее. Надеюсь, вы мне поможете.
Здравствуйте, List, Вы писали:
L>Здравствуйте. L>У меня есть два вопроса. Я прошу вас не объяснять мне, как примерно это делается, а привести, если это не очень сложно, уже готовый код. спасибо заранее. итак, две задачи:
L>1. Нужна функция-криптограф и функция-декриптограф. Есть несколько объектов типов string и TStrings, и все их нужно зашифровать. Хотелось бы, чтобы шифровка производилась в зависимости от числа, сообщаемого функции. Таким образом, функция-криптограф для строки, имея аргументами строку и число, должна вернуть уже зашифрованную строку. А функция-декриптограф, имея аргументами зашифрованную строку и то же самое число, возвращала расшифрованную строку. То же самое для Tstrings.
Прочитал ваш второй пост и прямо задумался — код под С++ Билдер вас точно не устроит... А жаль
L>2. Нужны функции, устанавливающая однозначное соответствие между строками до 5 символов и числами. Таким образом, получив в качестве аргумента эту строку, она должна возвращать число.
Это называется хеширование. Готовых алгоритмов на паскале — море. Как пример — CRC32, MD5 и пр. На www.torry.net есть точно. Это же касается и вашего первого вопроса.
F>Это называется хеширование. Готовых алгоритмов на паскале — море. Как пример — CRC32, MD5 и пр. На www.torry.net есть точно. Это же касается и вашего первого вопроса.
Спасибо, но зашеля туда... с английским у меня проблемы, да и найти быстро нало... хотелось бы поточнее...
Здравствуйте, List, Вы писали:
F>>Это называется хеширование. Готовых алгоритмов на паскале — море. Как пример — CRC32, MD5 и пр. На www.torry.net есть точно. Это же касается и вашего первого вопроса.
L>Спасибо, но зашеля туда... с английским у меня проблемы, да и найти быстро нало... хотелось бы поточнее...
Если настолько проблемы с английским, то, конечно, все хуже... В общем, вот:
> 1. Нужна функция-криптограф и функция-декриптограф. Есть несколько > объектов типов string и TStrings, и все их нужно зашифровать. Хотелось > бы, чтобы шифровка производилась в зависимости от числа, сообщаемого > функции. Таким образом, функция-криптограф для строки, имея аргументами > строку и число, должна вернуть уже зашифрованную строку. А > функция-декриптограф, имея аргументами зашифрованную строку и то же > самое число, возвращала расшифрованную строку. То же самое для > Tstrings. >
Лично я пользуюсь для шифрования строк своей собственной кодовой таблицей!!! Почему бы и тебе так не поступить?
Posted via RSDN NNTP Server 1.9 beta
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Здравствуйте, List, Вы писали:
L>У меня есть два вопроса. Я прошу вас не объяснять мне, как примерно это делается, а привести, если это не очень сложно, уже готовый код. спасибо заранее. итак, две задачи:
L>1. Нужна функция-криптограф и функция-декриптограф. Есть несколько объектов типов string и TStrings, и все их нужно зашифровать. Хотелось бы, чтобы шифровка производилась в зависимости от числа, сообщаемого функции. Таким образом, функция-криптограф для строки, имея аргументами строку и число, должна вернуть уже зашифрованную строку. А функция-декриптограф, имея аргументами зашифрованную строку и то же самое число, возвращала расшифрованную строку. То же самое для Tstrings.
L>2. Нужны функции, устанавливающая однозначное соответствие между строками до 5 символов и числами. Таким образом, получив в качестве аргумента эту строку, она должна возвращать число.
Какой степени сложности тебе нужны алгоритмы?
Самый простой — это проксорить или сложить по модулю.
procedure scramble(var s: string, const k: string, d: boolean);
{ s - строка, подлежащая шифрованию }
{ k - ключевая строка (возможно, 1-символьная) }
{ d - направление (шифрование/дешифрование) }
{ предполагается, что нулевых символов в строках нет }
{ также предполагается, что char = 0..255 }var
i, l, j: integer;
begin
l := length(k); { длина ключа }if(l = 0) return; { нечего шифровать }for i := 1 to length(s) do
begin
j := (i-1) mod l + 1; { элеметы ключа перебираются поочерёдно }if d then s[i] := chr( (ord(s[i]) + ord(k[j]) + 254) mod 255 + 1 )
else s[i] := chr( (ord(s[i]) - ord(k[j]) + 254) mod 255 + 1 );
{ сложение в кольце по модулю 255, с поправкой на то, что s[i] = 1..255, а не 0..254 }end;
end;