未完成
1. 加密crypto
- 在
crypto
模块中,为每一种加密算法定义了一个类 - 可以使用
getCiphers
方法查看在Node.js中所有能够使用的加密算法crypto.getCiphers()
- 可以使用
getHashes()
方法查看在Node.js中所有能够使用的散列算法crypto.getHashes()
2. 散列算法
- 散列(哈希)算法用来实现一些重要处理,允许对一段数据进行验证的前提下,将该数据模糊化,或者为一大段数据提供一个校验码。
- 使用
createHash
方法创建一个hash
对象crypto.createHash('algorithm');
const crypto = require('crypto');
const fs = require('fs');
const shasum = crypto.createHash('sha1');// 创建hash对象,加密算法为sha1
let file = fs.ReadStream('./fs.js');//读取该文件,为s
file.on('data', (d) => {
console.log(d);//d是file文件的Buffer对象
shasum.update(d);// 创建一个摘要
});
file.on('end', () => {
let d = shasum.digest('hex');// 输出摘要
console.log(d);
});
/**
* <Buffer 63 6f 6e 73 74 20 63 72 79 70 74 6f 20 3d 20 72 65 71 75 69 72 65 28 27 63 72 79 70 74 6f 27 29 3b 0a 63 6f 6e 73 74 20 66 73 20 3d 20 72 65 71 75 69 ... >
* 74b68572a7259696f8458606d89a91a206fc3fd0
*/
3. HMAC
算法
-
HMAC
算法将散列算法与一个密钥结合在一起,以阻止对签名完整性的破坏。 - 使用
createHmac
方法创建一个hmac
对象crypto.createHmac(algorithm, key)
-
algorithm
为可以在Node.js中使用的算法 -
key
为一个字符串,指定一个PEM
格式的密钥 - 在
OpenSSL
工具种,创建一个密钥openssl genrsa -out key.pem 1024
const crypto = require('crypto');
const fs = require('fs');
let pem = fs.readFileSync('./key.pem');
let key = pem.toString('ascii');
let shasum = crypto.createHmac('sha1', key);
let file = fs.ReadStream('./fs.js');
file.on('data', (data) => {
console.log('data.toString()');
console.log(data.toString());
console.log('shasum.update(data)');
console.log(shasum.update(data));
});
file.on('end', () => {
console.log("shasum.digest('hex')");
console.log(shasum.digest('hex'));
});