Tag: hmac

NodeJS hmac摘要问题与口音

我正在与Ruby,PHP和NodeJS进行比较,以获得以下代码,使用crypto模块获得NodeJS中的错误响应。 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 ,而7dc85acba66d21e4394be4f8ead2a327c9f1adc64a99c710c98f60c425bd7411返回7dc85acba66d21e4394be4f8ead2a327c9f1adc64a99c710c98f60c425bd7411 。 我注意到,如果我在PHP中尝试使用utf8_encode('á') ,它实际上给了我Node的期望结果。 我从文件加载节点中的重音文本,如下所示: JSON.parse(fs.readFileSync('keys.js', 'utf8')); 我将如何去改变我在Node中的代码来获得PHP和Ruby所呈现的结果哈希? 谢谢!

节点JSencryption,不能创build带有重音的字符的hmac

当我试图encryption的文本有重音字符(如ä,ï,ë)时,我在NodeJS中使用crypto.js生成正确的签名时遇到问题。 generateSignature = function (str, secKey) { var hmac = crypto.createHmac('sha1', secKey); var sig = hmac.update(str).digest('hex'); return sig; }; 如果'str'不包含重音字符(字符如ä,ï,ë),此函数将返回正确的HMAC签名。 如果文本中有重音字符,则不会返回正确的HMAC。 重音字符在UTF8编码是有效的,所以我不知道为什么encryption与他们有问题。 可能是这样,我需要以某种方式告诉encryption,我正在签署utf8编码的文本,但我不知道如何做到这一点。 在这篇文章中描述了完全相同的问题: NodeJS hmac摘要问题与口音然而,post本身以及答案对我来说是没有意义的(因为他们正在传递他们想要encryption的数据,走)。 以下是str和secKey的硬编码值的一个版本: var crypto = require('crypto'); str="äïë"; secKey="secret"; var hmac = crypto.createHmac('sha1', secKey); var sig = hmac.update(new Buffer(str, 'utf8')).digest('hex'); console.log("Sig: " + sig); console.log("Expected: 094b2ba039775bbf970a58e4a0a61b248953d30b"); // "Expected" was generated using […]

encryptionalgorithm列表

我试图find一个strings列表,可以使用一个encryptionalgorithm来适应这个函数,取代SHA256 。 crypto.createHmac("SHA256", secret).update(string).digest('base64'), 我已经认识到crypto使用openssl ,并且这些algorithm是特定于运行node.js的每个系统的。 通过以下命令,您可以看到系统可用的所有algorithm的列表。 openssl list-cipher-algorithms openssl list-cipher-commands 我将这两个命令的内容输出到了这个要点 。 令我困扰的是SHA256不在这两个列表中。 我真的很喜欢明确的algorithm列表。