我想创建一个I love cupcakes
散列(用密钥abcdeg
签名)
如何使用Node.js Crypto创建散列?
发布于 2011-09-20 12:38:22
加密文档:http://nodejs.org/api/crypto.html
const crypto = require('crypto')
const text = 'I love cupcakes'
const key = 'abcdeg'
crypto.createHmac('sha1', key)
.update(text)
.digest('hex')
发布于 2013-09-15 22:59:45
几年前,有人说update()
和digest()
是遗留方法,并引入了新的streaming API方法。现在,文档上说这两种方法都可以使用。例如:
var crypto = require('crypto');
var text = 'I love cupcakes';
var secret = 'abcdeg'; //make this your secret!!
var algorithm = 'sha1'; //consider using sha256
var hash, hmac;
// Method 1 - Writing to a stream
hmac = crypto.createHmac(algorithm, secret);
hmac.write(text); // write in to the stream
hmac.end(); // can't read from the stream until you call end()
hash = hmac.read().toString('hex'); // read out hmac digest
console.log("Method 1: ", hash);
// Method 2 - Using update and digest:
hmac = crypto.createHmac(algorithm, secret);
hmac.update(text);
hash = hmac.digest('hex');
console.log("Method 2: ", hash);
在节点v6.2.2和v7.7.2上测试
参见https://nodejs.org/api/crypto.html#crypto_class_hmac。提供了更多使用流方法的示例。
发布于 2014-10-09 23:04:39
Gwerder的解决方案不起作用,因为hash = hmac.read();
发生在流完成之前。因此,AngraX的问题。在本例中,hmac.write
语句也是不必要的。
取而代之的是:
var crypto = require('crypto');
var hmac;
var algorithm = 'sha1';
var key = 'abcdeg';
var text = 'I love cupcakes';
var hash;
hmac = crypto.createHmac(algorithm, key);
// readout format:
hmac.setEncoding('hex');
//or also commonly: hmac.setEncoding('base64');
// callback is attached as listener to stream's finish event:
hmac.end(text, function () {
hash = hmac.read();
//...do something with the hash...
});
更正式地说,如果你愿意,这句话
hmac.end(text, function () {
可能会被写入
hmac.end(text, 'utf8', function () {
因为在本例中文本是utf字符串
https://stackoverflow.com/questions/7480158
复制相似问题