Но 100%-ной уверенности всё же нет?
Алгоритм шифрования [Решено]
Модератор: Модераторы
vada
Но 100%-ной уверенности всё же нет?
Но 100%-ной уверенности всё же нет?
разные способы попробовал и текстовый файл, и просто через filestream.
Видимо проблема: не удается корректно записать строку и прочитать ее из файла.
Добавлено спустя 12 минут 20 секунд:
Вроде заработало!
Теперь через текстовый файл работает.
Спасибо.
Видимо проблема: не удается корректно записать строку и прочитать ее из файла.
Добавлено спустя 12 минут 20 секунд:
Вроде заработало!
Теперь через текстовый файл работает.
Спасибо.
debi12345 тяжеловат для тривиальных задач.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Может быть (имеются вивиду лишние ДЛЛ-ки?), но освоившись с ней (плюс Мартин написал отличные фронтэнды) - теперь наслаждаюсь
И симметричное шифрование, и несимметричное, и хэширование, и контрольные суммы...
debi12345 писал(а):Может быть (имеются вивиду лишние ДЛЛ-ки?), но освоившись с ней (плюс Мартин написал отличные фронтэнды) - теперь наслаждаюсьИ симметричное шифрование, и несимметричное, и хэширование, и контрольные суммы...
Кто такой Мартин?
А где про это почитать не подскажите? Чего-то не могу ничего толком найти. В synapse есть ssl_openssl*.pas файлы. Но там нет Мартина.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
resident, автор mse.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Вот простенький модуль который я использую, на базе тех компонентов :
Код: Выделить всё
unit cryptoutils;
{$ifdef FPC}{$mode objfpc}{$h+}{$endif}
interface
uses
msestrings
,msetypes
,msessl
,msecryptohandler
;
function symbase64cypherfrom(const avalue: ansistring; const apassw: msestring; const cypher_name: msestring = 'aes-256-cfb'): msestring;
function symbase64cypherto(const avalue: msestring; const apassw: msestring; const cypher_name: msestring = 'aes-256-cfb'): ansistring;
function getsha256(const adigest: tdigesthandler; const afile: filenamety): ansistring;
function getsha256(const afile: filenamety): ansistring;
function getsha256str(const avalue: msestring): ansistring;
implementation
uses
msestream,
mseformatstr
;
function symbase64cypherto(const avalue: msestring; const apassw: msestring; const cypher_name: msestring = 'aes-256-cfb'): ansistring;
begin
with tbase64handler.create(nil) do begin
try
chain:= tsymciphercryptohandler.create(nil);
with tsymciphercryptohandler(chain) do begin
ciphername:= cypher_name;
keyphrase:= stringtoutf8(apassw);
end;
result:= printableascii(encrypt(stringtoutf8(avalue)));
finally
chain.free;
free;
end;
end;
end;
//---------------------------------------------
function symbase64cypherfrom(const avalue: ansistring; const apassw: msestring; const cypher_name: msestring = 'aes-256-cfb'): msestring;
begin
with tbase64handler.create(nil) do begin
try
chain:= tsymciphercryptohandler.create(nil);
with tsymciphercryptohandler(chain) do begin
ciphername:= cypher_name;
keyphrase:= stringtoutf8(apassw);
end;
result:= utf8tostring(decrypt(avalue));
finally
chain.free;
free;
end;
end;
end;
//---------------------------------------------
function getsha256(const adigest: tdigesthandler; const afile: filenamety): ansistring;
var s: ansistring; fstrm: tmsefilestream;
begin
result:= '';
fstrm:= nil;
fstrm:= tmsefilestream.create(afile);
try
adigest.digestname:= 'sha256';
fstrm.cryptohandler:= adigest;
fstrm.readdatastring; // вычисляем его хэш
s:= adigest.digest(fstrm);
finally
if fstrm <> nil then begin
fstrm.free;
end;
end;
result:= lowercase(bytestrtostr(s));
end;
function getsha256(const afile: filenamety): ansistring;
var
s: ansistring;
adigest: tdigesthandler;
begin
result:= '';
adigest:= tdigesthandler.create(nil);
try
result:= getsha256(adigest,afile);
finally
adigest.free;
end;
end;
//-----------------------------------
function getsha256str(const avalue: msestring): ansistring;
var
s: ansistring;
fstrm: tmsefilestream;
dgst: tdigesthandler;
begin
result:= '';
fstrm:= tmsefilestream.create; {memory file}
dgst:= tdigesthandler.create(nil);
try
dgst.digestname:= 'sha256';
fstrm.cryptohandler:= dgst;
fstrm.readdatastring; // вычисляем его хэш
s:= dgst.digest(fstrm);
finally
fstrm.free;
dgst.free;
end;
result:= lowercase(bytestrtostr(s));
end;
//-----------------------------------
end.
Здрасть
При RSA шифровании каждый раз получается различная шифрованная строка. Это нормально?
з.ы. Вот нашел похожую тему:
http://www.gotdotnet.ru/forums/2/92922/
При RSA шифровании каждый раз получается различная шифрованная строка. Это нормально?
з.ы. Вот нашел похожую тему:
http://www.gotdotnet.ru/forums/2/92922/
