node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)

2020-06-17 07:55:46易采站长站整理

key 和 iv 必须是 ‘binary’ 的编码字符串或buffers.

crypto.createDecipheriv(algorithm, key, iv)

根据传入的算法,密钥和 iv,创建并返回一个解密对象。这是 createCipheriv() 的镜像。


const crypto = require('crypto');
function aesEncryptiv(data, key,iv) {
const cipher = crypto.createCipher('aes192', key, iv);
var crypted = cipher.update(data, 'utf8', 'hex');
crypted += cipher.final('hex');
return crypted;
}
function aesDecryptiv(encrypted, key,iv) {
const decipher = crypto.createDecipher('aes192', key, iv);
var decrypted = decipher.update(encrypted, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
var data = 'Hello, this is a secret message!';
var key = 'Password!';
var iv = 'match';
var encrypted = aesEncryptiv(data, key, iv);
var decrypted = aesDecryptiv(encrypted, key, iv);
//Hello, this is a secret message!
console.log(data);
//8a944d97bdabc157a5b7a40cb180e713f901d2eb454220d6aaa1984831e17231f87799ef334e3825123658c80e0e5d0c
console.log(encrypted);
//Hello, this is a secret message!
console.log(decrypted);

crypto Diffie-Hellman
crypto.createDiffieHellman(prime[, prime_encoding][, generator][, generator_encoding])

使用传入的 prime 和 generator 创建 Diffie-Hellman 秘钥交互对象。

generator 可以是数字,字符串或Buffer。如果没有指定 generator,使用 2

prime_encoding 和 generator_encoding 可以是 ‘binary’, ‘hex’, 或 ‘base64’。

如果没有指定 prime_encoding, 则 Buffer 为 prime。如果没有指定 generator_encoding ,则 Buffer 为 generator。

diffieHellman.generateKeys([encoding])

生成秘钥和公钥,并返回指定格式的公钥。这个值必须传给其他部分。编码方式: ‘binary’, ‘hex’, 或 ‘base64’。如果没有指定编码方式,将返回 buffer。

diffieHellman.getPrime([encoding])

用参数 encoding 指明的编码方式返回 Diffie-Hellman 质数,编码方式为: ‘binary’, ‘hex’, 或 ‘base64’。 如果没有指定编码方式,将返回 buffer。

diffieHellman.getGenerator([encoding])

用参数 encoding 指明的编码方式返回 Diffie-Hellman 生成器,编码方式为: ‘binary’, ‘hex’, 或 ‘base64’. 如果没有指定编码方式 ,将返回 buffer。

diffieHellman.computeSecret(other_public_key[, input_encoding][, output_encoding])

使用 other_public_key 作为第三方公钥来计算并返回共享秘密(shared secret)。秘钥用input_encoding 编码。编码方式为:’binary’, ‘hex’, 或 ‘base64’。如果没有指定编码方式 ,默认为 buffer。