2022-07-18 20:36:31 +08:00
|
|
|
import openApi from './openApi';
|
|
|
|
|
import JSEncrypt from 'jsencrypt'
|
|
|
|
|
import { notBlank } from './assert';
|
|
|
|
|
|
|
|
|
|
var encryptor: any = null
|
|
|
|
|
|
|
|
|
|
export async function getRsaPublicKey() {
|
|
|
|
|
let publicKey = sessionStorage.getItem('RsaPublicKey')
|
|
|
|
|
if (publicKey) {
|
|
|
|
|
return publicKey
|
|
|
|
|
}
|
2023-04-13 20:11:22 +08:00
|
|
|
publicKey = await openApi.getPublicKey.request() as string
|
2022-07-18 20:36:31 +08:00
|
|
|
sessionStorage.setItem('RsaPublicKey', publicKey)
|
|
|
|
|
return publicKey
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 公钥加密指定值
|
|
|
|
|
*
|
|
|
|
|
* @param value value
|
|
|
|
|
* @returns 加密后的值
|
|
|
|
|
*/
|
|
|
|
|
export async function RsaEncrypt(value: any) {
|
|
|
|
|
// 不存在则返回空值
|
|
|
|
|
if (!value) {
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|
if (encryptor != null) {
|
|
|
|
|
return encryptor.encrypt(value)
|
|
|
|
|
}
|
|
|
|
|
encryptor = new JSEncrypt()
|
|
|
|
|
const publicKey = await getRsaPublicKey() as string;
|
|
|
|
|
notBlank(publicKey, "获取公钥失败")
|
|
|
|
|
encryptor.setPublicKey(publicKey)//设置公钥
|
|
|
|
|
return encryptor.encrypt(value)
|
|
|
|
|
}
|