在Delphi xe中可以直接使用 TIdHashSHA256 来实现SHA256算法,代码如下
uses IdHashSHA, IdSSLOpenSSLHeaders;
var SHA256 : TIdHashSHA256;
SHA256 := TIdHashSHA256.Create;
Password_p := LowerCase(SHA256.HashStringAsHex(Password_p)); //默认得出的字符串是大写的,这里转换成小写了
SHA256.Free;
initialization
IdSSLOpenSSLHeaders.Load(); // TIdHashSHA256 使用,否则会报内存错误
说明,这里一定要看,否则调用时会出现内存错误
1、initialization 中要调用 IdSSLOpenSSLHeaders.Load() 来初始化SSL库。
2、程序运行目录下,要包含 libeay32.dll 和 ssleay32.dll两个文件,这两个文件也是SSL库使用的。
3、如果上面两个步骤都有了,还是出现内存错误,可以检查一下 IdSSLOpenSSLHeaders.Load() 的返回值,如果返回失败,表示SSL库没有初始化成功,可能是两个动态库的版本不对应。
4、在Win 10下,需要将文件复制到Program file目录下,否则会出现 IdSSLOpenSSLHeaders.Load()调用失败,使用时出现内存错误。