在 Free Pascal 库中,有一个哈希库,可以使用 MD5 和 SHA1 哈希算法 (http://wiki.freepascal.org/hash)。但如果我想使用更高的算法,例如 SHA256 或 SHA512,该怎么办?我可以使用 Free Pascal 实现这一点吗?搜索 FP Wiki 返回 SHA256\SHA512 的零命中。
在最近的版本中(比如 2 年左右),有一个带有单位“sha1”和“md5”的包“hash”,实现了一些基本的哈希值和校验和
如果您需要更多,大多数人使用 DCPCrypt,因为它很容易转换
http://www.cityinthesky.co.uk/opensource/dcpcrypt
至少我经常在列表上看到人们正在使用它的帖子
在 Google codesearch 中我发现了几个用 pascal 实现它的单元。
其中一个来源来自Double Commander,它是使用 FreePascal 和 Lazarus 开发的诺顿/总指挥官克隆,所以你就可以了。
对于其他哈希,我使用“Delphi Encryption Compendium (DEC) 5.2”。我不知道它是否适用于 FPC,但你应该尝试一下。有
THash_SHA512
和THash_SHA256
。
下载地址:http://www.terry.net/pages.php?id=519#939342
在 Lazarus 3.2 中,我使用了库 HashLib4Pascal。 SHA512 哈希值可以这样计算:
uses
HlpIHash,HlpHashFactory;
function CalcSha512(const aStrToHash: String): String;
var
IHashCrypt: IHash;
begin
IHashCrypt:=THashFactory.TCrypto.CreateSHA2_512();
Result:=IHashCrypt.ComputeString(aStrToHash,TEncoding.UTF8).ToString();
//...
//free up
//...
end;