Но 100%-ной уверенности всё же нет?

Модератор: Модераторы
debi12345 писал(а):Может быть (имеются вивиду лишние ДЛЛ-ки?), но освоившись с ней (плюс Мартин написал отличные фронтэнды) - теперь наслаждаюсьИ симметричное шифрование, и несимметричное, и хэширование, и контрольные суммы...
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 шифровании каждый раз получается различная шифрованная строка. Это нормально?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 233