一直用的D7,但是最近手头有个项目是跟WebService对接的,D7版本低了,调回的接口中没有接口函数,所以安装了一版Delphi XE5,试用了几天,还好用,但是研究的还不深。
项目对接中有个加密算法是SHA256的,所以在网上也找了相关的资料,自己写了一个,测试了几组数据,跟网上的SHA计算工具能对上,当前测试的数据不多。相关的计算函数如下:
procedure TMainFrm.Button1Click(Sender: TObject);
var
Str: String;
SHA256: TIdHashSHA256;
begin
Str := Trim(edtValue.Text);
if Str = '' then
begin
MessageBox(Handle, 'String cannot be empty!', 'Hint', MB_OK + MB_ICONASTERISK);
edtValue.SetFocus;
Exit;
end;
mm1.Text := Calc_SHA1(Str);
mmMD5.Text := Calc_MD5(Str);
if not IdSSLOpenSSLHeaders.Load() then
begin
MessageBox(Handle, 'IdSSLOpenSSLHeaders load failure!', 'Hint', MB_OK + MB_ICONASTERISK);
Exit;
end;
mm256.Text := Calc_SHA256(Str);
mm384.Text := Calc_SHA384(Str);
mm512.Text := Calc_SHA512(Str);
end;
function TMainFrm.Calc_SHA1(s: string): String;
begin
with TIdHashSHA1.Create do
try
Result := LowerCase(HashBytesAsHex(TidBytes(Bytesof(s))));
finally
Free;
end;
end;
function TMainFrm.Calc_SHA256(s: string): String;
begin
Result := '';
with TIdHashSHA256.Create do
try
Result := LowerCase(HashStringAsHex(s));
finally
Free;
end;
end;
function TMainFrm.Calc_SHA384(s: string): String;
begin
with TIdHashSHA384.Create do
try
Result := LowerCase(HashStringAsHex(s));
finally
Free;
end;
end;
function TMainFrm.Calc_SHA512(s: string): String;
begin
with TIdHashSHA512.Create do
try
Result := LowerCase(HashStringAsHex(s));
finally
Free;
end;
end;
function TMainFrm.Calc_MD5(s: string): String;
begin
with TIdHashMessageDigest5.Create do
try
Result := LowerCase(HashStringAsHex(S));
finally
Free;
end;
end;
以上只是对字符串的加密算法,文件之类的等空闲再研究。