Articles of hmac

我怎样才能解密一个HMAC?

我可以使用以下方法制作HMAC: var encrypt = crypto.createHmac("SHA256", secret).update(string).digest('base64'); 我正试图用这个秘密解密一个编码的HMAC: var decrypt = crypto.createDecipher("SHA256", secret).update(string).final("ascii"); 以下是不成功的。 我如何用密钥解密HMAC? 我得到以下错误: node-crypto : Unknown cipher SHA256 crypto.js:155 return (new Decipher).init(cipher, password); ^ Error: DecipherInit error

(Not-so)聪明钥匙导致Node JS中的SHA512 Hmac问题

这是一个古怪的问题,但我一直在这个工作几个小时,并没有取得很大的进展。 我希望这里有人能够build议… 我正在移植一个脚本从PHP到节点。 php脚本使用这个函数: hash_hmac('sha512', $text, $key); 我已经在使用encryption模块的节点中再现了这一点: var hash = crypto.createHmac( "sha512", key ); hash.update( text ); return hash.digest( "hex" ); 我已经证实,当给定相同的文本和密钥时,这些函数产生相同的散列。 除… 在php中用于键的string看起来类似于:(不要问) define("SITE_KEY", " __ , ,' e`—o (( ( | ___,' \\~——————————-' \_;/ ( / /) ._______________________________. ) (( ( (( ( “-' “-' "); 我试图在Javascript中重现这一点,就像这样: var key = "\ __\ […]

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列表。