分享

关于Delphi XE5中SHA1、SHA256、SHA384、SHA512、MD5的加密计算

 处处留心皆文章 2022-05-09 发布于浙江省

一直用的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;
 

以上只是对字符串的加密算法,文件之类的等空闲再研究。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多