后台先对vlue进行UTF-8转成2进制数组key进行MD5加密,然后进行Tripledes加密然后base64进行编码。前端先进行base64解码Tripledes解密结果是乱码。
uint8ArrayToHexStr(data: Uint8Array): string {
let hexString = '';
let i: number;
for (i = 0; i < data.length; i++) {
let char = ('00' + data[i].toString(16)).slice(-2);
hexString += char;
}
console.info('Uint8Array转十六进制:' + hexString);
return hexString;
}
encodeHtml(data:ePaperDetail){
if(data.encrypt=='1') {
//默认不传编码格式为hex
let md5str = CryptoJS.MD5(useInfo.epaperSubjectResult.decryptKey);
Base64Util.decode(data.html).then((htmlString:Uint8Array)=>{
let html=CryptoJS.enc.Utf8.stringify(CryptoJS.TripleDES.decrypt(this.uint8ArrayToHexStr(htmlString),CryptoJS.enc.Hex.stringify(md5str)))
})
}
}
加密解密必须使用同一个方式,可以使用3des加解密。参考示例如下: