最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析Node.js非對(duì)稱加密方法

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

前言

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

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

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

加密、解密方法

在Node.js中,負(fù)責(zé)安全的模塊是crypto。非對(duì)稱加密中,公鑰加密,私鑰解密,加解密對(duì)應(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);
};

測(cè)試代碼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)文章

  • Node.js入門筆記?之a(chǎn)sync模塊

    Node.js入門筆記?之a(chǎn)sync模塊

    這篇文章主要介紹了Node.js入門筆記?之a(chǎn)sync模塊,async是一個(gè)異步處理模塊,主要有三個(gè)方式:串行無(wú)關(guān)聯(lián)、并行無(wú)關(guān)聯(lián)?、串行有關(guān)聯(lián),文章圍繞主題展開更多的相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-06-06
  • NODE.JS加密模塊CRYPTO常用方法介紹

    NODE.JS加密模塊CRYPTO常用方法介紹

    這篇文章主要介紹了NODE.JS加密模塊CRYPTO常用方法介紹,需要的朋友可以參考下
    2014-06-06
  • node.js中對(duì)Event Loop事件循環(huán)的理解與應(yīng)用實(shí)例分析

    node.js中對(duì)Event Loop事件循環(huán)的理解與應(yīng)用實(shí)例分析

    這篇文章主要介紹了node.js中對(duì)Event Loop事件循環(huán)的理解與應(yīng)用,結(jié)合實(shí)例形式分析了node.js中Event Loop事件循環(huán)相關(guān)原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • nodejs利用ajax實(shí)現(xiàn)網(wǎng)頁(yè)無(wú)刷新上傳圖片實(shí)例代碼

    nodejs利用ajax實(shí)現(xiàn)網(wǎng)頁(yè)無(wú)刷新上傳圖片實(shí)例代碼

    本篇文章主要介紹了nodejs利用ajax實(shí)現(xiàn)網(wǎng)頁(yè)無(wú)刷新上傳圖片實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 淺談Node.js爬蟲之網(wǎng)頁(yè)請(qǐng)求模塊

    淺談Node.js爬蟲之網(wǎng)頁(yè)請(qǐng)求模塊

    本篇文章主要介紹了淺談Node.js爬蟲之網(wǎng)頁(yè)請(qǐng)求模塊,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-01-01
  • Node.js中多進(jìn)程模塊Cluster的介紹與使用

    Node.js中多進(jìn)程模塊Cluster的介紹與使用

    眾所周知Node.js是單線程的,一個(gè)單獨(dú)的Node.js進(jìn)程無(wú)法充分利用多核。Node.js從v0.6.0開始,新增cluster模塊,讓Node.js開發(fā)Web服務(wù)時(shí),很方便的做到充分利用多核機(jī)器。這篇文章主要給大家介紹了關(guān)于Node.js中多進(jìn)程模塊Cluster的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • node.js文件上傳重命名以及移動(dòng)位置的示例代碼

    node.js文件上傳重命名以及移動(dòng)位置的示例代碼

    本篇文章主要介紹了node.js文件上傳重命名以及移動(dòng)位置的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-01-01
  • docker中編譯nodejs并使用nginx啟動(dòng)

    docker中編譯nodejs并使用nginx啟動(dòng)

    這篇文章主要介紹了docker中編譯nodejs并使用nginx啟動(dòng)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Node.js與Sails redis組件的使用教程

    Node.js與Sails redis組件的使用教程

    這篇文章主要介紹了Node.js與Sails redis組件的使用教程,主要介紹幾個(gè)用法,為string,set,hash和list的使用。需要的朋友可以參考下
    2017-02-02
  • Node綁定全局TraceID的實(shí)現(xiàn)方法

    Node綁定全局TraceID的實(shí)現(xiàn)方法

    這篇文章主要介紹了Node 綁定全局 TraceID的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評(píng)論

汉沽区| 汉源县| 芒康县| 凌源市| 济阳县| 涟水县| 巴青县| 科尔| 泸溪县| 玉门市| 土默特右旗| 资溪县| 甘洛县| 灵山县| 子长县| 昌江| 中超| 内丘县| 和龙市| 五莲县| 长垣县| 黄梅县| 双桥区| 惠州市| 钟祥市| 六安市| 嘉荫县| 石楼县| 漾濞| 乌苏市| 巴塘县| 南陵县| 海林市| 武威市| 县级市| 灵武市| 汉源县| 磴口县| 富川| 石棉县| 马公市|