前端非對稱加密,后端Node.js解密(jsencrypt插件)(不需要密鑰轉碼)


    網上找了一圈node.js的RSA解密方法,多數是在同一端進行加密和解密,但是我要的需求是前端加密,發給后台解密。起初前端Vue項目使用jsencrypt插件對數據進行加密,然后傻傻的去后台也npm安裝jsencrypt  , 以為用它在后端解密就行, 但是一引用就會報錯,它不是一個后端插件,所以不要在后端用裝這個。node.js自帶有加密模塊crypto,但是嘗試了很多次用crypto解密前端發過來的數據都報錯了:Error: error:0406506C:rsa routines:rsa_ossl_private_decrypt:data greater than mod len。最后實在是沒有辦法,在npm上搜到了一個用於后台的加解密插件能夠成功解密。后來對JS模塊化有一點了解之后理解了為什么會報錯(我是一個前端小白)

### 1.前端插件:jsencrypt
  • 安裝
npm install jsencrypt

import { JSEncrypt } from 'jsencrypt'
  • 用法:https://www.npmjs.com/package/jsencrypt

  • 關於密鑰格式
    前端的公鑰我直接賦值的,用記事本打開 pub.pem公鑰文件直接復制的,粘貼到代碼里會有語法錯誤,我把每一行都加上了引號,行與行之間用加號連接。

"-----BEGIN RSA PRIVATE KEY-----"
+"MIICXAIBAAKBgQC0ujuQTkK10GVRk/V/QkavO25DLgsiL22l6QCtCO7+2MVLlZON"
+"Qj9d5AgAgmSqqfO0ZNbq6yde1zyXR5Mligq1CU+qNj72mJ6Bk7cz/gWFOcz8bGpK"
.......后面省略

2.node.js后端插件:node-jsencrypt

  • 安裝
npm install --save node-jsencrypt

const JSEncrypt = require('node-jsencrypt')
  • 用法:與jsencrypt用法完全相同

  • 關於密鑰格式:后端我是用fs讀取私鑰文件。

    // 設置私鑰
    const prvKey = fs.readFileSync('../openssl/rsa-prv.pem').toString()    // 路徑自己決定,用toString()轉換成字符串,不轉會報錯
    let jsencrypt = new JSEncrypt()
    jsencrypt.setPrivateKey(prvKey)

    // 解密數據
    let dec_by_prv = jsencrypt.decrypt(前台數據);



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM