• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

MD5与SHA在Delphi中函数实现,加密密码----补充C#中对应

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

MD5 与 SHA 在 Delphi 中函数实现。

为了加密密码,必须使用一种算法,查询资料,比较好的方法是使用:MD5等算法,参考:Delphi XE8 支持MD5

第一种方式是:引用 System.Hash 中的 THashMD5, (或者 THashSHA1,THashSHA2) 参考 官方文档。

                         http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Hash

      简单用法:  hashmd5 := THashMD5.Create.GetHashString('abc');         ‘abc’ 是你想加密的字符串,你提供。

       使用它计算的结果中,字符是小写。MD5 ("abc") =   900150983cd24fb0d6963f7d28e17f72 

        另一种加密是:    hashsha1 := THashSHA1.Create.GetHashString('abc');

====================== 
加“盐”加密: THashMD5.Create.GetHMAC('abc','salt');
可以将用户名作为 salt,对密码进行MD5加密,或者THashSHA1,THashSHA2加密。

                                      THashSHA1/2.Create.GetHMAC(const ADataAKeystringstring;

                  http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Hash.THashMD5.GetHMAC

 

第二种方式是:使用  IdHashMessageDigest  ,产生的加密字符是:大写格式

                                比如:加密 ‘abc ’   MD5 ("abc") = 900150983CD24FB0D6963F7D28E17F72  

在单元中,引入Uses  IdHashMessageDigest,(也可以包括:,IdHash,IdGlobal, 不知道原因 !)

代码如下:

Uses  IdHashMessageDigest;

function MD5Encode(const str:string):String;     //定义一个公开函数

function MD5Encode(const str:string):String;
var
    //引用 IdHashMessageDigest,IdHash,IdGlobal 空间
    AMD5Encode:TIdHashMessageDigest5;
begin
    AMD5Encode:=TIdHashMessageDigest5.Create;            //创建实例

    try
        Result  :=  AMD5Encode.HashStringAsHex(str);      //这是实现!

    finally
        AMD5Encode.Free;
    end;
end;

============================================================

由于代码迁移到 Net 框架,需要相应 的C# 的代码实现,继续补充相应资料。

寻求:delphi 中   System.Hash 中的 THashMD5, (或者 THashSHA1,THashSHA2)的C# 资料

   参考:https://docs.microsoft.com/zh-cn/dotnet/api/system.security.cryptography.hmacmd5?view=netframework-4.6

     来自   System.Security.Cryptography

     程序集:  System.Security.Cryptography.Algorithms.dll, mscorlib.dll, netstandard.dll

如下代码产生相同的 Hash结果:

    using System.Security.Cryptography;    //增加引用

     string logUser;              //  代码登录的用户名称

byte[] key) 定义;

   HMACMD5 provider = new HMACMD5(Encoding.UTF8.GetBytes(loguser));

LogPass
   byte[] hashedPassword = provider.ComputeHash(Encoding.UTF8.GetBytes(LogPass));

   }

 

   

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi访问https/SSL、OpenSSL发布时间:2022-07-18
下一篇:
怎样用delphi7中的SQLconnection组件远程连接Oracle数据库发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap