我正在对以下代码与 Ruby、PHP 和 NodeJS 进行并排比较,使用 NodeJS 得到错误的响应crypto
module.
PHP
hash_hmac('sha256', 'text', 'á');
Ruby
OpenSSL::HMAC.hexdigest('sha256', 'á', 'text')
NodeJS
var signer = crypto.createHmac('sha256', 'á');
var expected = signer.update("text").digest('hex');
Ruby 和 PHP 都返回34b3ba4ea7e8ff214f2f36b31c6a6d88cfbf542e0ae3b98ba6c0203330c9f55b
, 同时,NodeJS 返回7dc85acba66d21e4394be4f8ead2a327c9f1adc64a99c710c98f60c425bd7411
。我注意到,如果我尝试utf8_encode('á')
在 PHP 中,它实际上给了我 Node 期望的结果。
我正在从文件加载 Node 中的重音文本,如下所示:
JSON.parse(fs.readFileSync('keys.js', 'utf8'));
我将如何更改 Node 中的代码以获得 PHP 和 Ruby 都提供的结果哈希值?
Thanks!