|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Шифровка с заданием ключа от 1 до 9 символов (можно больше)
Доброго время суток!
Нужна помощь. Пишу программу, в которой необходима шифровка с заданием ключа. Перерыл несколько различных методов, но все они дают одну и ту же проблему - если он например видет на своём пути hag5mo (это только так к примеру, на деле он сталкивается с другими значениями, но понять причину ни как не могу), то шифрует до 5, а что дальше пропускает мимо глаз... У каждого метода свои "значения затупка". Короче мне нужен хороший метод шифровки, с заданием ключа от 1 до 9 цифр (можно и больше). |
#2
|
|||
|
|||
Я делаю так:
Код:
for key:=1 to length(s) do begin t:=ord(s[key]); t:=t+key; s[key]:= chr(t); end; принцип работы: Например есть слово "РЕКЛАМА". при key=1 слово станет СЕКЛАМА, при 2 СЗКЛАМА, при 3 СЗНЛАМА и т.д. Можно еще и так: Код:
key:=Random(round(9)); //функция round необходима для того, чтобы не было дробных значений!! for m:=1 to length(s) do begin t:=ord(s[m]); t:=t+key; s[m]:= chr(t); end; edit1.text:=s+key; Надеюсь тебе поможет!!!!; при дешифровании считывай последний символ в строке или слове(смотря куда будешь ключ писать) и пиши t:=t-key; И будет тебе счастье!!!!))))) ПЫ.СЫ. Писал прямо на форуме, поэтому могут быть ошибки!!! Последний раз редактировалось ~ SaM ~, 04.04.2007 в 18:16. |
#3
|
|||
|
|||
Гы.Забыл сказать....
Ключ должен быть только типа integer!!! |
#4
|
||||
|
||||
to ~ SaM ~
Random никогда не вернет дробного значения, если вызывается с параметром to TitiS Если никаких серьезных требований к шифрованию не предъявляется, то можно написать простые функции с применением xor и not. Вот пример Код:
// Кодирование строки function Decode(text, key: string): string; var code: Longint; i: integer; begin if Length(text) = 0 then Exit; if Length(key) = 0 then begin Result := text; Exit; end; code := 0; for i := 1 to Length(key) do Inc(code, Ord(key)); for i := 1 to Length(text) do Result := Result + Chr(not((Ord(text) + i) xor code)); end; // Декодирование строки function Encode(text, key: string): string; var code: Longint; i: integer; begin if Length(text) = 0 then Exit; if Length(key) = 0 then begin Result := text; Exit; end; code := 0; for i := 1 to Length(key) do Inc(code, Ord(key[i])); for i := 1 to Length(text) do Result := Result + Chr((not(Ord(text[i]) xor code)) - i); end; |
#5
|
|||
|
|||
Decoding, твой код не срабатывает - пишет не совпадение типов переменных... =(
~ Sam ~ пойду разбираться с твоим способом |
#6
|
||||
|
||||
to TitiS
странно, но похоже, что форум проглючило. Я вставил код прямо из Delphi методом Copy/Paste, но посмотрев его после твоего сообщения, увидел, что код не соответствует оригиналу… Выкладываю исходники… Decode.zip |