一直用的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;
以上只是对字符串的加密算法,文件之类的等空闲再研究。
|