1

未完成

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'));
});

karuru
329 声望64 粉丝