Алгоритм шифрования [Решено]

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

novo
новенький
Сообщения: 43
Зарегистрирован: 31.07.2011 21:35:10

Алгоритм шифрования [Решено]

Сообщение novo »

Нужен простенький алгоритм шифрования(дешифрования) текста с использованием пароля.

Нашел полно вариантов для Delphi, но в Лазаре не работают.

Заранее спасибо!
Последний раз редактировалось novo 02.10.2011 23:17:14, всего редактировалось 1 раз.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Допустим, модуль из FCL blowfish
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

novo
Или самый простой метод - с помощью операции XOR. ;)
novo
новенький
Сообщения: 43
Зарегистрирован: 31.07.2011 21:35:10

Сообщение novo »

Использовал такие функции

Код: Выделить всё

function SimpleEncrypt(Text: string;Val:integer):string;
var
i: integer; //Счетчик
Word: char; //Шифрованная буква
Begin
for i := 1 to length(Text) do
begin
Word := chr((ord(Text[i]) - Val));
Result := Result + Word;
end;
End;

function SimpleDecrypt(Text: string;Val:integer):string;
var
i: integer; //Счетчик
Word: char; //Шифрованная буква
Begin
for i := 1 to length(Text) do
begin
Word := chr((ord(Text[i]) + Val));
Result := Result + Word;
 end;
End;     
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

novo гениально :lol:
А если ключ будет равен 250?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Brainenjii, а смысл? Если всё необходимое уже есть в LCL.
novo
новенький
Сообщения: 43
Зарегистрирован: 31.07.2011 21:35:10

Сообщение novo »

Mr.Smart писал(а):novo гениально :lol:
А если ключ будет равен 250?

не будет
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

novo писал(а):не будет

Тогда ограничение ключа 1..32.

Добавлено спустя 15 минут 10 секунд:
Тогда уж лучше так:

Код: Выделить всё

function EncodeDecodeStr(const aStr: String; const aKey: String): String;
var
 j, i: Integer;
begin
  if (aKey='') or (aStr='') then
   Result:=aStr
  else
   begin
    i:=1;
    SetLength(Result,Length(aStr));
    for j:=1 to Length(aStr) do
     begin
      if i>Length(aKey) then
       i:=1;
      Result[j]:=Char(Byte(aStr[j]) xor Byte(aKey[i]));
      inc(i);
     end;
   end;
end;


Функция как кодирует по ключу, так и декодирует. Думаю сами разберётесь :wink:
eastorwest
новенький
Сообщения: 57
Зарегистрирован: 23.07.2009 20:21:46
Откуда: Н-ск

Сообщение eastorwest »

По поводу XOR...
Недавно заметил в модуле RTL.strutils функции

Код: Выделить всё

// Encode a string by XOR-ing its characters using characters of a given key, representing the result as hex values.
function XorEncode(  const Key: String;  const Source: String ):String;
//Decode a string encoded with XorEncode
function XorDecode(  const Key: String;  const Source: String):String;
// Encode a string by XOR-ing its characters using characters of a given key.
function XorString(  const Key: ShortString;  const Src: ShortString):ShortString;
novo
новенький
Сообщения: 43
Зарегистрирован: 31.07.2011 21:35:10

Сообщение novo »

Спасибо всем!!! :wink:

Отличный форум!
poiuyt555
новенький
Сообщения: 51
Зарегистрирован: 12.09.2011 07:45:51

Сообщение poiuyt555 »

Mr.Smart писал(а):Допустим, модуль из FCL blowfish

А не подскажете как при помощи blowfish зашифровать строку и поместить ее в файл, а затем достать и расшифровать?
Просто, если в рамках работы программы зашифровать строку и расшифровать - то все работает, но если зашифрованную строку записать в файл (строка около 1000 символов), затем из фала ее достать то выдается ошибка при расшифровке.
проверял: длина зашифрованной строки до записи в файл, напр 1100 символов, а после чтения ее из файла 1092 символа.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

А Вы в какой тип файла записываете строку?
Аватара пользователя
vada
энтузиаст
Сообщения: 691
Зарегистрирован: 14.02.2006 12:43:17

Сообщение vada »

Строку? Скорее всего в текстовый :)
svk12
постоялец
Сообщения: 411
Зарегистрирован: 09.06.2008 18:42:47

Сообщение svk12 »

Для этого лучше использовать RC4. Длина строки не изменится.
Ответить