Delphi 和 Node.js 之间的 SHA256 差异

Difference in SHA256 between Delphi and Node.js

我正在 Node.js

中生成哈希
const sha256 = crypto.createHash('sha256');
const hash = sha256.update(password).digest('base64');

对于密码'123abc' - 我得到'3RMKhJ17KeVUGwXS9/hqSs1PHsWYwclDh4P1a8Tw/4A='

然后我在delphi

中做同样的事情
Hash:= (TNetEncoding.Base64.Encode(THashSHA2.GetHashString(Str, SHA256)));

密码'123abc' - 我得到'ZGQxMzBhODQ5ZDdiMjllNTU0MWIwNWQyZidmODZhNGFjZNGYwZmY4MA=='

为什么不同?我哪里做错了?

要使用 Delphi 获得与 Node.js 相同的值,您必须这样做:

   Hash := TNetEncoding.Base64.EncodeBytesToString(THashSHA2.GetHashBytes(Str, SHA256));