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

來源:互聯網
上載者:User

淺析Node.js非對稱式加密方法,node.js加密方法
前言

剛回答了SegmentFault上一個兄弟提的問題《非對稱解密出錯》。這個屬於Node.js在安全上的應用,遇到同樣問題的人應該不少,基於回答的問題,這裡簡單總結下。

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

完整的代碼可以在 《Nodejs學習筆記》 找到,也歡迎大家關注 程式猿小卡的GitHub。

加密、解密方法

在Node.js中,負責安全的模組是crypto。非對稱式加密中,公開金鑰加密,私密金鑰解密,加解密對應的API分別如下。

加密函數:

crypto.publicEncrypt(key, buffer)

解密函數:

crypto.privateDecrypt(privateKey, buffer)
入門例子

假設有如下utils.js

// utils.jsconst crypto = require('crypto');// 加密方法exports.encrypt = (data, key) => { // 注意,第二個參數是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+IlGr8ZECKnnO8XRDwttBbf5EmG0qV8gs0aGkh649rb75I+tMu2JSNuVj61CncL/7Ct2kAZ6CZZo1vYgtzhlFnxd4V7Ra+aIwLZaXT/h3eE+/cFsL4VAJI5wXh4Mq4Vtu7uEjeogAOgXACaIqiFyrk3wIDAQABAoGBAKdrunYlqfY2fNUVAqAAdnvaVOxqa+psw4g/d3iNzjJhBRTLwDl2TZUXImEZQeEFueqVhoROTa/xVg/r3tshiD/QC71EfmPVBjBQJJIvJUbjtZJ/O+L2WxqzSvqewzYaTm6Te3kZeG/cULNMIL+xU7XsUmslbGPAurYmHA1jNKFpAkEA48aUogSv8VFnR2QuYmilz20LkCzffK2aq2+9iSz1ZjCvo+iuFt71Y3+etWomzcZCuJ5sn0w7lcSxnqyzCFDspQJBAN3O2VdQF3gua0Q5VHmK9AvsoXLmCfRa1RiKuFOtrtC609RfX4DCFxDxH09UVu/8Hmdau8t6OFExcBriIYJQwDMCQQCZLjFDDHfuiFo2js8K62mnJ6SBH0xlIrND2+/RUuTuBov4ZUC+rM7GTUtEodDazhyM4C4Yq0HfJNp25Zm5XALpAkBGatLpO04YI3R+dkzxQUH1PyyKU6m5X9TjM7cNKcikD4wMkjK5p+S2xjYQc1AeZEYqvc187dJPRIi4oC3PN1+tAkBuW51/5vBj+zmd73mVcTt28OmSKOX6kU29F0lvEh8IoHiLOo285vG5ZtmXiY58tAiPVQXa7eU8hPQHTHWa9qp6-----END RSA PRIVATE KEY-----`;exports.pubKey = `-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFWnl8fChyKI/Tgo1ILB+IlGr8ZECKnnO8XRDwttBbf5EmG0qV8gs0aGkh649rb75I+tMu2JSNuVj61CncL/7Ct2kAZ6CZZo1vYgtzhlFnxd4V7Ra+aIwLZaXT/h3eE+/cFsL4VAJI5wXh4Mq4Vtu7uEjeogAOgXACaIqiFyrk3wIDAQAB-----END PUBLIC KEY-----`;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.