如何创建公钥和私钥文件
- 创建私钥的文件的命令
1. openssl
2. genrsa -out private_key.pem 1024
- 创建公钥文件的命令
rsa -in private_key.pem -pubout -out public_key.pem
- 以下代码就是公钥和秘钥的产生
/**
* @func [引入crypto]
* @func [公钥加密,私钥解密]
*/
let crypto = require('crypto');
let fs = require('fs');
//公钥
let public_key_buffer = fs.readFileSync("public_key.pem");
//私钥
let private_key_buffer = fs.readFileSync('private_key.pem');
let public_key = public_key_buffer.toString("ascii");
let private_key = private_key_buffer.toString('ascii');
// console.log(public_key) //公钥
// console.log(private_key) //私钥
/**
* @func [hash]
* @func [hmac]
* @func [非对称加密可以破解]
* @func [私钥-解密]
* @func [crypto.privateDecrypt()]
* @func [公钥加密]
* @func [crypto.publicEncrypt()]
*/
//公钥加密
function encrypt(key, data) {
//加密后的密文
return crypto.publicEncrypt(key, data);
}
//私钥解密
function decrypt(key, decrypted) {
return crypto.privateDecrypt(key, decrypted);
}
let str = '希望快点毕业';
// buffer.from 将字符串变成二进制文件
let encrypted = encrypt(public_key, Buffer.from(str));
console.log(encrypted.toString('hex')); //加密
//解密的时候,传递二进制值
let decrypted = decrypt(private_key, encrypted);
console.log(decrypted.toString('utf-8')); //解密
//打印结果 上面是密文b6c44684288360d1b40c50b1838703a6f95d3b828fd33d2c064e7c0a509f20d9defe632841799c9ce4e8d4a3bf704d67a33f9702947c4c72d70425bd80ff2de17af8914555e41ea5f0f2a229bbf6e233d9c859c57cc83841de09a9a2af197322a696c2d8b954c587ae83279026633e7121620b49247bfb9c950da08f2989e08e
//这个是解密之后的明文
//希望快点毕业