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