1. 程式人生 > >Vue項目中的RSA加解密

Vue項目中的RSA加解密

用戶輸入 dft eba NPU str 文件 動態生成 console ted

前後端使用rsa加密:

一般是客戶端初始化時訪問登錄服務時,服務端面動態生成一對RSA對,公鑰傳給客戶端,客戶端拿到後,用戶輸入密碼後,點登錄時用公鑰加密返回給服務端,服務端用私鑰解就行了

一、安裝jsencrypt

1 npm i jsencrypt

技術分享圖片

node_modules文件夾中出現jsencrypt

二、引入jsencrypt

在main.js中import:

1 import JsEncrypt from ‘jsencrypt‘
2 Vue.prototype.$jsEncrypt = JsEncrypt

技術分享圖片

三、生成公鑰和私鑰(服務端生成)

技術分享圖片
1 // 私鑰
2 openssl genrsa -out rsa_1024_priv.pem 1024
3 // cat rsa_1024_priv.pem 讀取私鑰內容
4 // 公鑰
5 openssl rsa -pubout -in rsa_1024_priv.pem -out rsa_1024_pub.pem
6 // cat rsa_1024_pub.pem 讀取公鑰內容
技術分享圖片

四、JSEncrypt實例化(此部分可做成工具類,供項目中各模塊使用)

技術分享圖片
1 // 實例化一個JSEncrypt對象
2 let jse = new this.$jsEncrypt.JSEncrypt()
3 jse.setPublicKey(`-----BEGIN PUBLIC KEY-----
4 MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8ygMKjJLSUpnfXqt8lRSAdDxA
5 HWKi9GbTFkCbAjkRCR6VUakxxXLXHQUtPCizKcvNpuYqZ5bO8LEgpY7SL3JEdEI9
6 OuMnZ6ToeHPfcHeS+EgN0oYmdQ49RB5wZkcBEFk80OBEAM6VhnE0IuHGkU5ko9oP
7 Hq3boEQ3Ej6r3T+UhQIDAQAB
8 -----END PUBLIC KEY-----`)
技術分享圖片

五、加解密(公鑰加密,私鑰解密)

技術分享圖片
 1 // 設置需要加密的字符串
 2 let encrypted = jse.encrypt(‘Hello, world‘)
 3 // 輸出加密結果
 4 console.log(encrypted)
 5 // 設置密鑰
 6 jse.setPrivateKey(`-----BEGIN RSA PRIVATE KEY-----
 7 MIICXgIBAAKBgQC8ygMKjJLSUpnfXqt8lRSAdDxAHWKi9GbTFkCbAjkRCR6VUakx
 8 xXLXHQUtPCizKcvNpuYqZ5bO8LEgpY7SL3JEdEI9OuMnZ6ToeHPfcHeS+EgN0oYm
 9 dQ49RB5wZkcBEFk80OBEAM6VhnE0IuHGkU5ko9oPHq3boEQ3Ej6r3T+UhQIDAQAB
10 AoGBAIO8JwEedHlE4FBovBsT4Bl+gmhu2NxC1NlpBq3jkDSd+3RQZlLvp6IJgwo8
11 l13lxWv8kVF3tVkzxTW1sQJjz0RYShH8vXLl94gf6mFkJbeOPP6uA0mGDG81yINw
12 KUpE0RM6ZM9yKEeVdK3u67TkEBcC6Td5KBl8Yof3q7qxiOWhAkEA4BXEtpnfhgm3
13 7s1VjDxdIHTtWL1PihMT+SCOqp+Vv27ABVrxtDW/w2R3ZzR5ezROI2v1DVhj5wvs
14 xPGXx6OpSQJBANetVvazS/5SQNvb+Cmjw9Rt5NilyxfX5IsSswaIojbwhZY2FVZy
15 AlFH9K/YS2FYFyU7iIqN6IIkOxXpOcj/bV0CQQCRYM4MgWuotClmfkSgBJGOew14
16 4uj1dUch+2NTgtFOLvXZA5WICs7sXwOwKzUdH2QKSwHitJOr0+q6ItsLpDwxAkBX
17 zvDK+/CCmIZjfMkqWsxN3nf/ZHCtQm5/2Jsem94/M+mPYHGLgltDMGKEfTEjbrPt
18 qrFKh8ATzCBqKUwncybZAkEAmVNW1dftWWoriZZXXMvfFkTDgYvRmytoVEThhnd0
19 J/AOhZiUAs9+kHfGKivlTE209AY6Bw8aRzuTCziSwQhhBQ==
20 -----END RSA PRIVATE KEY-----`)
21 // 解密加密過的字符串
22 let decrypted = jse.decrypt(encrypted)
23 // 打印結果
24 console.log(decrypted)
技術分享圖片

我在項目中的使用如下圖(this.publicKey從接口獲取):

技術分享圖片

以上為我的使用方式,歡迎大家批評指正~

參考地址:http://travistidwell.com/jsencrypt/#

Vue項目中的RSA加解密