浅谈HTTPS

######加密解密 node环境使用内置的crypto模块加密解密 浏览器环境使用jsencrypt模块加密解密 ######生成秘钥对 node环境使用node-rsa,当然也可以在带有browserify的浏览器中工作。 浏览器环境中可以使用window.crypto.subtle

在浏览器中生成密钥对
const NodeRSA = require('node-rsa');
const crypto = require('crypto');
const key = new NodeRSA({ b: 1024 }); //生成1024位的密钥
var publicKey = key.exportKey('pkcs1-public-pem'); //公钥
var privateKey = key.exportKey('pkcs1-private-pem'); //私钥
//console.log('公钥:', publicKey);
//console.log('私钥:', privateKey);

const data = "哈哈";
console.log("content: ", data)
//公钥加密
//得到buffer二进制值(默认为utf-8)经过base64编码后的字符串
const encodeData = crypto.publicEncrypt(
    publicKey, 
    Buffer.from(data, 'utf-8')
).toString('base64');
console.log("公钥加密: ", encodeData)

//私钥解密
//把密文以base64格式解析为buffer,然后通过私钥解析为明文数据buffer,然后解析(默认为utf-8)
const decodeData = crypto.privateDecrypt(
    privateKey, 
    Buffer.from(encodeData, 'base64')
);
console.log("私钥解密: ", decodeData.toString('utf-8'))