Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.04.2007, 05:32
TitiS TitiS вне форума
Новичок
 
Регистрация: 29.12.2006
Сообщения: 62
Репутация: 10
По умолчанию Шифровка с заданием ключа от 1 до 9 символов (можно больше)

Доброго время суток!

Нужна помощь. Пишу программу, в которой необходима шифровка с заданием ключа. Перерыл несколько различных методов, но все они дают одну и ту же проблему - если он например видет на своём пути hag5mo (это только так к примеру, на деле он сталкивается с другими значениями, но понять причину ни как не могу), то шифрует до 5, а что дальше пропускает мимо глаз... У каждого метода свои "значения затупка". Короче мне нужен хороший метод шифровки, с заданием ключа от 1 до 9 цифр (можно и больше).
Ответить с цитированием
  #2  
Старый 04.04.2007, 14:29
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

Я делаю так:

Код:
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  
Старый 04.04.2007, 14:31
~ SaM ~ ~ SaM ~ вне форума
Начинающий
 
Регистрация: 05.01.2007
Адрес: Днепропетровск
Сообщения: 141
Репутация: 25
По умолчанию

Гы.Забыл сказать....
Ключ должен быть только типа integer!!!
Ответить с цитированием
  #4  
Старый 04.04.2007, 19:30
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

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;
Принцип алгоритма основан на том, что операции xor и not обратимые. Если нужно что-то более серьезное, используй встроенные в Винду криптопровайдеры.
Ответить с цитированием
  #5  
Старый 05.04.2007, 07:12
TitiS TitiS вне форума
Новичок
 
Регистрация: 29.12.2006
Сообщения: 62
Репутация: 10
По умолчанию

Decoding, твой код не срабатывает - пишет не совпадение типов переменных... =(
~ Sam ~ пойду разбираться с твоим способом
Ответить с цитированием
  #6  
Старый 05.04.2007, 09:56
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

to TitiS
странно, но похоже, что форум проглючило. Я вставил код прямо из Delphi методом Copy/Paste, но посмотрев его после твоего сообщения, увидел, что код не соответствует оригиналу… Выкладываю исходники…
Decode.zip
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter