crypto 非对称 加密-解密

如何创建公钥和私钥文件
  • 创建私钥的文件的命令
 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
	
	//这个是解密之后的明文
	//希望快点毕业


发布了103 篇原创文章 · 获赞 19 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/M106588L/article/details/100567192
今日推荐