jiangping
2025-04-18 4a970f0abce9820dfde9ec3786f411b06eedb8e9
代码初始化
已添加2个文件
80 ■■■■■ 文件已修改
h5/utils/decryption.js 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/utils/encrypt.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/utils/decryption.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
// AES
import CryptoJS from 'crypto-js'
import JSEncrypt from 'jsencrypt'
import {
  generateRandomObj,
  rsaPassWord
} from './encrypt.js'
// ç§é’¥
// const privateKey = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAJkOgs/FrhpXs3QzdhiQ9eFdK7HECPNPadhecJA5SU2kEx+FlRnbA7Z9/Tqg9RYV4zuuxp3cYp9fa8AywRzVIHYLCokt39bUYIsEVJQdh4KRr1usl/x8Wv24GjcnuDlsLnwAgSsqNcVM/4XhtaeqyrmNMEbT7YqxJjBGJNamwSfXAgMBAAECgYADkiQZJtqGAM/OATlbH16tMFhJoHI5AvxMMP/dTYjZR9+uV5Z/8O0oP849pO2y4zXW+Z/mpPKkFzzTUhvRSWOldBFOmjktPdCBA8NuyFT3+dlew202pEbjDxdnTjb+GTNnli0cHoILsJGoqEeCCddNbtlidv0kFQWubbgfuSNf2QJBAOHmb9v36hnmcH3eLEo2wy7bEE30q+UoUGzAlLw2Tv/APh82NV6VVB11duYDeifAE0wJFtImp9zEDrVcmiN5PNMCQQCtc1kwdP15Dfj+miTkmjKbsona3+m06XQ0VbeUelQ07VtAG9zpkaza7c8JEA15cOcxHECFG5f2E4f3KBl543ZtAkBBtj6jxiIbFqVyd8Z6cCOm5aKAisPWDTwX5o1dko64ZruraKFtuhKV3y2PC0PlfEIgxCQXTZdW6NE+gIl1+DZxAkAsC3iAh5S+IsAx1u67ZjSnuOSsweNU31t01rdxasbrUcK0Ot8UKLveNDk4sezaA8ORgv0XT/R8tmT2bCZb/1jZAkBUqgcdO5b9YM9wumvKIDHhKuIobrRYlIhSfh36Iaor0VO9a+Xl0c5lwmZmZDyZHE/mfhuVkjdifOwEeORnWPs7";
// const privateKey = uni.getStorageSync('aes_private_key')
export function decryptedData (msg, data) {
  console.log(msg)
  console.log(data)
  // å˜æ¢key:将当月位数字符串去除,然后倒序
  const monthIndex = new Date().getMonth() + 1
  const msgStr = msg.slice(0, monthIndex) + msg.slice(monthIndex + 1)
  const reverseMsgStr = msgStr.split('').reverse().join('')
  const str1 = data.replace(/\s/g, '')
  console.log(reverseMsgStr)
  console.log(str1)
  // è§£å¯†å¹¶è¿”回结果
  return (
    JSON.parse(
      CryptoJS.AES.decrypt({
        ciphertext: CryptoJS.enc.Base64.parse(str1)
      },
      CryptoJS.enc.Utf8.parse(reverseMsgStr), {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7,
        iv: CryptoJS.enc.Utf8.parse('AES/CBC/PKCS5Padding')
      }
      ).toString(CryptoJS.enc.Utf8)
    ) || {}
  )
}
// å¯¹æ•°æ®åР坆
export function encryptData (data) {
  const str = CryptoJS.AES.encrypt(
    JSON.stringify(data),
    CryptoJS.enc.Utf8.parse(generateRandomObj), {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7,
      iv: CryptoJS.enc.Utf8.parse('AES/CBC/PKCS5Padding')
    }
  ).toString()
  return {
    data: str,
    ivKey: rsaPassWord
  }
}
h5/utils/encrypt.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
// RSA
import JSEncrypt from 'jsencrypt'
/******************************************************************************/
// å…¬é’¥
// const publicKey = uni.getStorageSync('aes_public_key')
const publicKey =
    "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOgrUW4jM5Y" +
    "2irUCpvpyBn41aTRfGHNQuBHIByK9fbc" +
    "lNXXt7/QuQj3NQCfwknBBCHcM7A38eC249UxjFkLHAm+I9o15INjF/TrHtlzkzzS9jiek" +
    "godhUuM4eVxXQUcDNdAgSkKFt9T5WRXg2cjEZQyoi5DlIWLmOqixmx8OKFRQIDAQAB";
function generateRandomString () {
  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
  let result = ''
  const charactersLength = characters.length
  for (let i = 0; i < 16; i++) {
    result += characters.charAt(Math.floor(Math.random() * charactersLength))
  }
  return result
}
export const generateRandomObj = generateRandomString()
// è°ƒç”¨å‡½æ•°ç”Ÿæˆéšæœºå­—符串
const encryptor = new JSEncrypt() // åˆ›å»ºåŠ å¯†å¯¹è±¡å®žä¾‹
// console.log(publicKey)
encryptor.setPublicKey(publicKey) // è®¾ç½®å…¬é’¥
export const rsaPassWord = encryptor.encrypt(generateRandomObj)