Алгоритм шифрования [Решено]
Модератор: Модераторы
Алгоритм шифрования [Решено]
Нужен простенький алгоритм шифрования(дешифрования) текста с использованием пароля.
Нашел полно вариантов для Delphi, но в Лазаре не работают.
Заранее спасибо!
Нашел полно вариантов для Delphi, но в Лазаре не работают.
Заранее спасибо!
Последний раз редактировалось novo 02.10.2011 23:17:14, всего редактировалось 1 раз.
Допустим, модуль из FCL blowfish
novo
Или самый простой метод - с помощью операции XOR.
Или самый простой метод - с помощью операции XOR.
Использовал такие функции
Код: Выделить всё
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; novo гениально
А если ключ будет равен 250?
А если ключ будет равен 250?
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
Brainenjii, а смысл? Если всё необходимое уже есть в LCL.
Mr.Smart писал(а):novo гениально![]()
А если ключ будет равен 250?
не будет
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;Функция как кодирует по ключу, так и декодирует. Думаю сами разберётесь
-
eastorwest
- новенький
- Сообщения: 57
- Зарегистрирован: 23.07.2009 20:21:46
- Откуда: Н-ск
По поводу XOR...
Недавно заметил в модуле RTL.strutils функции
Недавно заметил в модуле 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;
Спасибо всем!!! 
Отличный форум!
Отличный форум!
Mr.Smart писал(а):Допустим, модуль из FCL blowfish
А не подскажете как при помощи blowfish зашифровать строку и поместить ее в файл, а затем достать и расшифровать?
Просто, если в рамках работы программы зашифровать строку и расшифровать - то все работает, но если зашифрованную строку записать в файл (строка около 1000 символов), затем из фала ее достать то выдается ошибка при расшифровке.
проверял: длина зашифрованной строки до записи в файл, напр 1100 символов, а после чтения ее из файла 1092 символа.
А Вы в какой тип файла записываете строку?
Строку? Скорее всего в текстовый 
Для этого лучше использовать RC4. Длина строки не изменится.
