MD5 与 SHA 在 Delphi 中函数实现,加密密码
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 AData, AKey: string) : string;
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# 资料
来自 System.Security.Cryptography
程序集: System.Security.Cryptography.Algorithms.dll, mscorlib.dll, netstandard.dll
如下代码产生相同的 Hash结果:
using System.Security.Cryptography; //增加引用
string logUser; // 代码登录的用户名称
//HMACMD5(Byte[]) 初始化时,采用了用户的名称 public HMACMD5 (byte[] key) 定义;
HMACMD5 provider = new HMACMD5(Encoding.UTF8.GetBytes(loguser));
// 加密用户的录入的密码 LogPass
byte[] hashedPassword = provider.ComputeHash(Encoding.UTF8.GetBytes(LogPass));
//将字节数组转换成 字符串,“X2” 是大写,可以使用 “x2” 转成小写 。
StringBuilder displayString = new StringBuilder();
for (int i = 0; i < hashedPassword.Length; i++)
{
displayString.Append(hashedPassword[i].ToString("X2"));
}
MD5 与 SHA 在 Delphi 中函数实现,加密密码的更多相关文章
- Delphi 中 函数参数中的 const 修饰符的本质以及注意事项
来自:http://blog.csdn.net/farrellcn/article/details/9096787 ------------------------------------------ ...
- DELPHI中函数、过程变量的声明与应用
Procedure型变量: 在DELPHI中,函数.过程的地址可以赋给一个特殊类型的变量,变量可用如下方式声明: var p : procedure(num:integer); //过程 或: var ...
- Delphi中函数定义和声明的位置
当函数(或过程)A定义在函数(或过程)B之前,那么函数B就可以调用函数A,并且编译成功,例如下面的 procedure TForm1.btn1Click(Sender: TObject); 和 f ...
- 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA
1.Java的安全体系架构 1.1 Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 API 是 Java 编程语言的核心 API,位于 java.sec ...
- 本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密算法。
BASE64编码算法不算是真正的加密算法. MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法.我们通常只把他们作为加密的基础.单纯的以上 ...
- BASE64、MD5、SHA、HMAC几种加密算法
本篇内容简要介绍BASE64.MD5.SHA.HMAC几种加密算法. BASE64编码算法不算是真正的加密算法. MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加 ...
- Java的单向加密算法MD5和SHA——加密和解密
出自:http://www.cnblogs.com/onetwo/p/3875551.html 1.JDK中MD5和SHA加密的主要类 在JDK6.0中,与MD5与SHA密切相关的几个类的类图如下: ...
- JAVA加密技术-----MD5 与SHA 加密
关于JAVA的加密技术有很多很多,这里只介绍加密技术的两种 MD5与 SHA. MD5与SHA是单向加密算法,也就是说加密后不能解密. MD5 ---信息摘要算法,广泛用于加密与解密技术,常用于文件校 ...
- 加密算法中BASE64、MD5、SHA、HMAC等之间的区别
http://blog.csdn.net/lplj717/article/details/51828692 根据项目需要了解了一下几种加密算法(参考其他博客),内容简要介绍BASE64.MD5.SHA ...
随机推荐
- Numpy 笔记: 多维数组的切片(slicing)和索引(indexing)【转】
目录 切片(slicing)操作 索引(indexing) 操作 最简单的情况 获取多个元素 切片和索引的同异 切片(slicing)操作 Numpy 中多维数组的切片操作与 Python 中 lis ...
- synchronized 和lock的区别
synchronized 是什么时候释放? 1.获取锁的线程执行完代码2.线程执行出现异常 synchronized 的缺陷? 1.Lock类可以主动释放锁.2.synchronized 是被动. R ...
- 阅读:ECMAScript 6 入门(1)
参考 ECMAScript 6 入门 ES6新特性概览 ES6 全套教程 ECMAScript6 (原著:阮一峰) JavaScript 教程 重新介绍 JavaScript(JS 教程) 前言 学了 ...
- Java笔记——泛型擦除
1. 泛型擦除 package cn.Douzi.T_Demo; import java.util.ArrayList; /** * @Auther: Douzi * @Date: 2019/3/8 ...
- Nginx 学习笔记(九)申请Let's Encrypt通配符HTTPS证书
Let's Encrypt 宣布 ACME v2 正式支持通配符证书,并将继续清除 Web 上采用 HTTPS 的障碍,让每个网站轻松获取管理证书.消息一出,马上就有热心用户分享出了 Let's En ...
- dubbo监控中心---dubbo-admin
dubbo监控中心---dubbo-admin: 一:dubbo管理平台搭建: 1-1:下载dubbo-admin.war包 https://pan.baidu.com/s/16jkoSozY68M7 ...
- 深入浅出mybatis之与spring集成
目录 写在前面 详细配置 1.dataSource(数据源) 2.sqlSessionFactory(Session工厂) 3.Mapper(映射器) 4.TransactionManager(事务管 ...
- PHP 图片验证码验证
*.html <input type="> <img src="> api.php <?php session_start(); $dataObj = ...
- 三十八、Linux 线程——线程属性初始化、销毁、设置和获得分离属性
38.1 线程属性初始化和销毁 #include <pthread.h> int pthread_attr_init(pthread_attr_t *attr); int pthread_ ...
- 【51nod 1785】数据流中的算法
Description 51nod近日上线了用户满意度检测工具,使用高级人工智能算法,通过用户访问时间.鼠标轨迹等特征计算用户对于网站的满意程度. 现有的统计工具只能统计某一个窗口中,用户的满意程 ...