Rsa加密和解密


1.安裝:

npm install jsencrypt --save-dev

2.創建rsa.js

1.在src/util/文件夾下創建rsa.js文件

2. 引入'jsencrypt', 'encryptlong'

/* 產引入jsencrypt實現數據RSA加密 */
import JSEncrypt from 'jsencrypt/bin/jsencrypt' // 處理長文本數據時報錯 jsencrypt.js Message too long for RSA /* 產引入encryptlong實現數據RSA加密 */ 
import Encrypt from
'encryptlong' // encryptlong是基於jsencrypt擴展的長文本分段加解密功能。

3.准備好publicKey(公鑰)&& privateKey   (私鑰)

// 公鑰key
const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' +
  '2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ=='
// 私鑰key
const privateKey = 'MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8\n' +
  'mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9p\n' +
  'B6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue\n' +
  '/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZ\n' +
  'UBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6\n' +
  'vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha\n' +
  '4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3\n' +
  'tTbklZkD2A=='

4.寫完整的加密解密函數

export default {/* 加密 *//* 解密 - PRIVATE_KEY - 驗證 */
  decrypt(data) {
    const PRIVATE_KEY = privateKey
    var encryptor = new Encrypt()
    encryptor.setPrivateKey(PRIVATE_KEY)
    // 如果是對象/數組的話,需要先JSON.stringify轉換成字符串
    var result = encryptor.decryptLong(data)
    return result
  }
};
/* 超長內容 */
export function encrypt(data){
  const enctyptor = new JSEncrpt();
  const publicKey = PUBLIC_KEY;
  encryptor.setPublicKey(publicKey);
  return encryptor.encryptLong(data)
}

5.完整的Rsa.js文件

/* 產引入jsencrypt實現數據RSA加密 */
import JSEncrypt from 'jsencrypt' // 處理長文本數據時報錯 jsencrypt.js Message too long for RSA
/* 產引入encryptlong實現數據RSA加密 */
import Encrypt from 'encryptlong' // encryptlong是基於jsencrypt擴展的長文本分段加解密功能。
 
// 密鑰對生成 http://web.chacuo.net/netrsakeypair
 
// 公鑰key
const PUBLIC_KEY= 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANL378k3RiZHWx5AfJqdH9xRNBmD9wGD\n' +
  '2iRe41HdTNF8RUhNnHit5NpMNtGL0NPTSSpPjjI1kJfVorRvaQerUgkCAwEAAQ=='
// 私鑰key
const privateKey = 'MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8\n' +
  'mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9p\n' +
  'B6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue\n' +
  '/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZ\n' +
  'UBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6\n' +
  'vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha\n' +
  '4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3\n' +
  'tTbklZkD2A=='
 
export default {/* 解密 - PRIVATE_KEY - 驗證 */
  decrypt(data) {
    const PRIVATE_KEY = privateKey
    var encryptor = new Encrypt()
    encryptor.setPrivateKey(PRIVATE_KEY)
    // 如果是對象/數組的話,需要先JSON.stringify轉換成字符串
    var result = encryptor.decryptLong(data)
    return result
  }
};
export function encrypt(data){
  const enctyptor = new JSEncrpt();
  const publicKey = PUBLIC_KEY;
  encryptor.setPublicKey(publicKey);
  return encryptor.encryptLong(data)
}
 

6.調用函數

import Rsa from  '@/utils/rsa'
import {encrypt} form '@/utils/rsa' let rasEncryptData = { reqStr: '', // 加密前數據 encryptStr: '', // 加密后數據 decryptStr: '' // 解密后數據 } 16:09:00 this.rasEncryptData.encryptStr = encrypt(this.rasEncryptData.reqStr) // 加密 this.rasEncryptData.decryptStr = Rsa.decrypt(this.rasEncryptData.encryptStr) // 解密

 


免責聲明!

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



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