nodejs-crypto加解密

  • 非对称加解密是利用公钥和私钥的方式来实现的,公钥对外暴露,每个人都可以获取到,客户端传来明文数据,经过公钥加密后,传到服务端,服务端利用私钥进行解密,得到客户端传来的明文数据,反之亦然。我们常见的数字证书、加密狗即是采用非对称加密来完成安全验证的。
    • 优点:安全性更高,公钥是公开的,秘钥是自己保存的,不需要将私钥给别人。
    • 缺点:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
  • utils.js 
const crypto = require('crypto');

// 加密方法
exports.encrypt = (data, key) => {
    // 注意,第二个参数是Buffer类型
    return crypto.publicEncrypt(key, Buffer.from(data));
};

// 解密方法
exports.decrypt = (encrypted, key) => {
    // 注意,encrypted是Buffer类型
    return crypto.privateDecrypt(key, encrypted);
};

 

  • keys.js(公私钥生成地址  http://web.chacuo.net/netrsakeypair
exports.privKey = `-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMEuokckuAZIaZTh
ZJ2Af6wH9unBaEAUCrO1q6IqJfBQYPa5mhC+i/p9LIMGLPImlvAinHMHAD8+skzt
LZGScPN2stgHQQOGaZcq4RoVQyLQ7Se37ev5V73ZpnM9vUxjqo8Lokgbfj9sifPX
mYFkxsVYvet91PirRFTHqEs8bkJvAgMBAAECgYEAhYYoIChfEeinIYKQutSAanWu
0m8eEXxI0WH2WcXsJyhHfQFYXc52jhJK290+37iQhzZFELR8FTrOnqEo5/9iFZF2
tEt0sjr+1bTeD6Vqhzsmu5OgLgiuNW3t6HAl9xM5KoMLN+d9Ngxwrj+9Kfg5OorJ
Wsr0FqZc35phZ0T6OPECQQDu3jnNG4LYvsFNNd1ZhCdwDoGs4wWyBp5X4xOrWJSD
ajNCPmYFri3yZvoUtigcVHTZiFxDC7UAHmXuu6uZDPxLAkEAzwmVv8C3WjY4Ge/6
jsVL76jpDmDZUhCJm0/A7HPvt487W35K8D8woUNjdsE/3b15fhc/Vru8qfEDTG8+
AFlz7QJAUnPHA/PBIMwHsX0sYN/rNRTs0h6zMpZyRegOPBEhgpNACle7o65SEeBV
5pxSECVfCE+3eTUrT1Uu3k9NllETLQJBAM0qAmty3j9XW2DYnsK8YPOtvsWw06qv
GK3/6n5mpTaRiZCxJjHNbLNhxD76Yf+qs6pv/yREBkGhxFMKKbbO7kECQAIdhNJq
K4R5td8pATnxQjvqvNxDDrYIpY3AkaX05NN+ny8lCCH+vdQU+RTDqS3WIBwA1+sc
dgbs4r0uAii4B6Y=
-----END PRIVATE KEY-----
`;

exports.pubKey = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBLqJHJLgGSGmU4WSdgH+sB/bp
wWhAFAqztauiKiXwUGD2uZoQvov6fSyDBizyJpbwIpxzBwA/PrJM7S2RknDzdrLY
B0EDhmmXKuEaFUMi0O0nt+3r+Ve92aZzPb1MY6qPC6JIG34/bInz15mBZMbFWL3r
fdT4q0RUx6hLPG5CbwIDAQAB
-----END PUBLIC KEY-----
`;
  • index.js
const utils = require('./utils');
const keys = require('./keys');

const plainText = '加密内容';
const crypted = utils.encrypt(plainText, keys.pubKey); // 加密
const decrypted = utils.decrypt(crypted, keys.privKey); // 解密
console.log(decrypted.toString()); // 加密内容

  

  如有侵权,请联系作者删除~~~

你可能感兴趣的:(个人总结)