摘要:非對稱加密的理論知識,可以參考筆者前面的文章進(jìn)階模塊之理論篇。非對稱加密中,公鑰加密,私鑰解密,加解密對應(yīng)的分別如下。相關(guān)鏈接程序猿小卡的學(xué)習(xí)筆記非對稱解密出錯(cuò)
前言
剛回答了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----- `;小結(jié)
可以看到,通過Node.js進(jìn)行非對稱加密、解密還是挺方便的。更多用法,可以參考官方文檔。
相關(guān)鏈接程序猿小卡的GitHub
Nodejs學(xué)習(xí)筆記
非對稱解密出錯(cuò)
https://nodejs.org/api/crypto.html
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/11335.html
摘要:前言總括原文博客地址協(xié)議之?dāng)?shù)據(jù)加密過程詳解知乎專欄簡書專題前端進(jìn)擊者知乎前端進(jìn)擊者簡書博主博客地址的個(gè)人博客生活只要你聽過,不可能沒聽過協(xié)議吧,協(xié)議是一種安全協(xié)議。 前言 總括: 原文博客地址:SSL協(xié)議之?dāng)?shù)據(jù)加密過程詳解 知乎專欄&&簡書專題:前端進(jìn)擊者(知乎)&&前端進(jìn)擊者(簡書) 博主博客地址:Damonare的個(gè)人博客 生活 SSL 只要你聽過HTTPS,不可能沒聽過...
摘要:加解密偽代碼加密解密非對稱加密又稱公開秘鑰加密。常見的非對稱加密算法。通常來說對稱加密速度要快于非對稱加密。在之后的通訊階段,可以使用對稱加密算法對數(shù)據(jù)進(jìn)行加密,秘鑰則是握手階段生成的。確認(rèn)信息完整未被篡改。 一、 文章概述 互聯(lián)網(wǎng)時(shí)代,網(wǎng)絡(luò)上的數(shù)據(jù)量每天都在以驚人的速度增長。同時(shí),各類網(wǎng)絡(luò)安全問題層出不窮。在信息安全重要性日益凸顯的今天,作為一名開發(fā)者,需要加強(qiáng)對安全的認(rèn)識,并通過技...
摘要:接下來,作者從密碼算法的誤用著手,針對一些常量,改進(jìn)了靜態(tài)分析工具。具體來說,就是在的基礎(chǔ)上做了動(dòng)態(tài)分析方法和靜態(tài)分析方法相結(jié)合的策略,在線記錄文件,離線檢測分析,使得整個(gè)工具更加完善。 ...
摘要:相當(dāng)于模擬了另一次請求。只會停留在當(dāng)級下然后找,不會往下再查找對應(yīng)的的規(guī)則或者匹配。臨時(shí)重定向會重新向服務(wù)器發(fā)起請求。 上一篇:基于Nginx的中間件架構(gòu)(二):代理服務(wù)、負(fù)載均衡、緩存服務(wù)、動(dòng)靜分離 一、Rewrite規(guī)則(常用) showImg(https://segmentfault.com/img/bV42Q7?w=374&h=88); 1.1 regex正則表達(dá)式 showI...
摘要:比特幣區(qū)塊鏈無疑是當(dāng)今業(yè)界的最熱門的。目前,每個(gè)成功的礦工獲得可能每年更換一次或通過比特幣社區(qū)決策作為成功向區(qū)塊鏈添加一塊交易的獎(jiǎng)勵(lì)。填寫其他詳細(xì)信息,例如比特幣金額和可選說明。 比特幣區(qū)塊鏈無疑是當(dāng)今業(yè)界的最熱門的。通過這篇博客,我將盡力向大家介紹加密貨幣比特幣的概念,以及它如何創(chuàng)造我們稱之為區(qū)塊鏈的革命性技術(shù)。 這個(gè)問題經(jīng)常引起混淆。這篇文章可以快速解釋和清理這方面的混亂! 什么是...
閱讀 1536·2023-04-26 00:25
閱讀 922·2021-09-27 13:36
閱讀 934·2019-08-30 14:14
閱讀 2184·2019-08-29 17:10
閱讀 1018·2019-08-29 15:09
閱讀 1953·2019-08-28 18:21
閱讀 971·2019-08-26 13:27
閱讀 984·2019-08-26 10:58