fix: decrypt
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import JSEncrypt from 'jsencrypt'
|
||||
import { getPublicKey } from '@/api/publicKey'
|
||||
import forge from 'node-forge'
|
||||
|
||||
const privateKey =
|
||||
'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMFPa+v52FkSUXvcUnrGI/XzW3EpZRI0s9BCWJ3oNQmEYA5luWW5p8h0uadTIoTyYweFPdH4hveyxlwmS7oefvbIdiP+o+QIYW/R4Wjsb4Yl8MhR4PJqUE3RCy6IT9fM8ckG4kN9ECs6Ja8fQFc6/mSl5dJczzJO3k1rWMBhKJD/AgMBAAECgYEAucMakH9dWeryhrYoRHcXo4giPVJsH9ypVt4KzmOQY/7jV7KFQK3x//27UoHfUCak51sxFw9ek7UmTPM4HjikA9LkYeE7S381b4QRvFuf3L6IbMP3ywJnJ8pPr2l5SqQ00W+oKv+w/VmEsyUHr+k4Z+4ik+FheTkVWp566WbqFsECQQDjYaMcaKw3j2Zecl8T6eUe7fdaRMIzp/gcpPMfT/9rDzIQk+7ORvm1NI9AUmFv/FAlfpuAMrdL2n7p9uznWb7RAkEA2aP934kbXg5bdV0R313MrL+7WTK/qdcYxATUbMsMuWWQBoS5irrt80WCZbG48hpocJavLNjbtrjmUX3CuJBmzwJAOJg8uP10n/+ZQzjEYXh+BszEHDuw+pp8LuT/fnOy5zrJA0dO0RjpXijO3vuiNPVgHXT9z1LQPJkNrb5ACPVVgQJBALPeb4uV0bNrJDUb5RB4ghZnIxv18CcaqNIft7vuGCcFBAIPIRTBprR+RuVq+xHDt3sNXdsvom4h49+Hky1b0ksCQBBwUtVaqH6ztCtwUF1j2c/Zcrt5P/uN7IHAd44K0gIJc1+Csr3qPG+G2yoqRM8KVqLI8Z2ZYn9c+AvEE+L9OQY='
|
||||
@@ -10,24 +11,93 @@ const privateKey =
|
||||
* @param data
|
||||
* @returns {Promise<{param: PromiseLike<ArrayBuffer>}|*>}
|
||||
*/
|
||||
// export async function encryptedData(data) {
|
||||
// let publicKey = ''
|
||||
// const res = await getPublicKey()
|
||||
// publicKey = res.data.publicKey
|
||||
// if (res.data.mockServer) {
|
||||
// publicKey = ''
|
||||
// }
|
||||
// if (publicKey == '') {
|
||||
// return data
|
||||
// }
|
||||
// const encrypt = new JSEncrypt()
|
||||
// encrypt.setPublicKey(`-----BEGIN PUBLIC KEY-----${publicKey}-----END PUBLIC KEY-----`)
|
||||
// data = encrypt.encrypt(JSON.stringify(data))
|
||||
// return {
|
||||
// param: data,
|
||||
// }
|
||||
// }
|
||||
|
||||
export async function encryptedData(data) {
|
||||
let publicKey = ''
|
||||
const res = await getPublicKey()
|
||||
publicKey = res.data.publicKey
|
||||
if (res.data.mockServer) {
|
||||
publicKey = ''
|
||||
}
|
||||
if (publicKey == '') {
|
||||
let publicKey = res.data.publicKey
|
||||
|
||||
if (res.data.mockServer || !publicKey) {
|
||||
return data
|
||||
}
|
||||
const encrypt = new JSEncrypt()
|
||||
encrypt.setPublicKey(`-----BEGIN PUBLIC KEY-----${publicKey}-----END PUBLIC KEY-----`)
|
||||
data = encrypt.encrypt(JSON.stringify(data))
|
||||
|
||||
const pem = `-----BEGIN PUBLIC KEY-----\n${publicKey}\n-----END PUBLIC KEY-----`
|
||||
const forgePublicKey = forge.pki.publicKeyFromPem(pem)
|
||||
const encrypted = forgePublicKey.encrypt(JSON.stringify(data), 'RSA-OAEP', {
|
||||
md: forge.md.sha256.create(), // OAEP + SHA-256
|
||||
})
|
||||
|
||||
return {
|
||||
param: data,
|
||||
param: forge.util.encode64(encrypted),
|
||||
}
|
||||
}
|
||||
|
||||
// export async function encryptedData(data) {
|
||||
// const res = await getPublicKey()
|
||||
// let publicKey = res.data.publicKey
|
||||
|
||||
// if (res.data.mockServer || !publicKey) {
|
||||
// return data
|
||||
// }
|
||||
|
||||
// // 构造 PEM 格式
|
||||
// publicKey = `-----BEGIN PUBLIC KEY-----\n${publicKey}\n-----END PUBLIC KEY-----`
|
||||
|
||||
// // 将 PEM 公钥导入为 CryptoKey
|
||||
// const importedKey = await importPublicKey(publicKey)
|
||||
|
||||
// // 加密数据
|
||||
// const encodedData = new TextEncoder().encode(JSON.stringify(data))
|
||||
// const encryptedBuffer = await crypto.subtle.encrypt(
|
||||
// {
|
||||
// name: 'RSA-OAEP',
|
||||
// },
|
||||
// importedKey,
|
||||
// encodedData
|
||||
// )
|
||||
|
||||
// // 转 Base64 字符串,方便传输
|
||||
// const base64Encrypted = btoa(String.fromCharCode(...new Uint8Array(encryptedBuffer)))
|
||||
|
||||
// return { param: base64Encrypted }
|
||||
// }
|
||||
|
||||
// // 把 PEM 格式公钥转换为 CryptoKey
|
||||
// async function importPublicKey(pem) {
|
||||
// const b64 = pem
|
||||
// .replace(/-----BEGIN PUBLIC KEY-----/, '')
|
||||
// .replace(/-----END PUBLIC KEY-----/, '')
|
||||
// .replace(/\s/g, '')
|
||||
// const binaryDer = Uint8Array.from(atob(b64), (c) => c.charCodeAt(0))
|
||||
|
||||
// return crypto.subtle.importKey(
|
||||
// 'spki',
|
||||
// binaryDer.buffer,
|
||||
// {
|
||||
// name: 'RSA-OAEP',
|
||||
// hash: 'SHA-256',
|
||||
// },
|
||||
// false,
|
||||
// ['encrypt']
|
||||
// )
|
||||
// }
|
||||
|
||||
/**
|
||||
* @author https://github.com/zxwk1998/vue-admin-better (不想保留author可删除)
|
||||
* @description RSA解密
|
||||
|
||||
Reference in New Issue
Block a user