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));
我正在 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));