亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺析Node.js非對稱加密方法

 更新時(shí)間:2018年01月29日 08:53:04   作者:程序猿小卡_casper  
本篇文章主要給大家分享了Node.js非對稱加密方法以及代碼實(shí)例講解,對此有興趣的朋友參考學(xué)習(xí)下吧。

前言

剛回答了SegmentFault上一個(gè)兄弟提的問題《非對稱解密出錯(cuò)》。這個(gè)屬于Node.js在安全上的應(yīng)用,遇到同樣問題的人應(yīng)該不少,基于回答的問題,這里簡單總結(jié)下。

非對稱加密的理論知識,可以參考筆者前面的文章《NODEJS進(jìn)階:CRYPTO模塊之理論篇》。

完整的代碼可以在 《Nodejs學(xué)習(xí)筆記》 找到,也歡迎大家關(guān)注 程序猿小卡的GitHub。

加密、解密方法

在Node.js中,負(fù)責(zé)安全的模塊是crypto。非對稱加密中,公鑰加密,私鑰解密,加解密對應(yīng)的API分別如下。

加密函數(shù):

crypto.publicEncrypt(key, buffer)

解密函數(shù):

crypto.privateDecrypt(privateKey, buffer)

入門例子

假設(shè)有如下utils.js

// utils.js
const crypto = require('crypto');
// 加密方法
exports.encrypt = (data, key) => {
 // 注意,第二個(gè)參數(shù)是Buffer類型
 return crypto.publicEncrypt(key, Buffer.from(data));
};
// 解密方法
exports.decrypt = (encrypted, key) => {
 // 注意,encrypted是Buffer類型
 return crypto.privateDecrypt(key, encrypted);
};

測試代碼app.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()); // 你好,我是程序猿小卡

附上公鑰、私鑰 keys.js:

exports.privKey = `-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDFWnl8fChyKI/Tgo1ILB+IlGr8ZECKnnO8XRDwttBbf5EmG0qV
8gs0aGkh649rb75I+tMu2JSNuVj61CncL/7Ct2kAZ6CZZo1vYgtzhlFnxd4V7Ra+
aIwLZaXT/h3eE+/cFsL4VAJI5wXh4Mq4Vtu7uEjeogAOgXACaIqiFyrk3wIDAQAB
AoGBAKdrunYlqfY2fNUVAqAAdnvaVOxqa+psw4g/d3iNzjJhBRTLwDl2TZUXImEZ
QeEFueqVhoROTa/xVg/r3tshiD/QC71EfmPVBjBQJJIvJUbjtZJ/O+L2WxqzSvqe
wzYaTm6Te3kZeG/cULNMIL+xU7XsUmslbGPAurYmHA1jNKFpAkEA48aUogSv8VFn
R2QuYmilz20LkCzffK2aq2+9iSz1ZjCvo+iuFt71Y3+etWomzcZCuJ5sn0w7lcSx
nqyzCFDspQJBAN3O2VdQF3gua0Q5VHmK9AvsoXLmCfRa1RiKuFOtrtC609RfX4DC
FxDxH09UVu/8Hmdau8t6OFExcBriIYJQwDMCQQCZLjFDDHfuiFo2js8K62mnJ6SB
H0xlIrND2+/RUuTuBov4ZUC+rM7GTUtEodDazhyM4C4Yq0HfJNp25Zm5XALpAkBG
atLpO04YI3R+dkzxQUH1PyyKU6m5X9TjM7cNKcikD4wMkjK5p+S2xjYQc1AeZEYq
vc187dJPRIi4oC3PN1+tAkBuW51/5vBj+zmd73mVcTt28OmSKOX6kU29F0lvEh8I
oHiLOo285vG5ZtmXiY58tAiPVQXa7eU8hPQHTHWa9qp6
-----END RSA PRIVATE KEY-----
`;
exports.pubKey = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFWnl8fChyKI/Tgo1ILB+IlGr8
ZECKnnO8XRDwttBbf5EmG0qV8gs0aGkh649rb75I+tMu2JSNuVj61CncL/7Ct2kA
Z6CZZo1vYgtzhlFnxd4V7Ra+aIwLZaXT/h3eE+/cFsL4VAJI5wXh4Mq4Vtu7uEje
ogAOgXACaIqiFyrk3wIDAQAB
-----END PUBLIC KEY-----
`;

相關(guān)文章

最新評論