使用recrypt-js实现代理重加密后无法解密出原文本的问题
解决recrypt-js代理重加密后无法还原原文本的问题
你的代码存在两个关键问题,导致无法解密出原文本:
- 未接收重加密方法的返回值:
PRE.reEncryption()不会修改传入的原加密对象obj,而是返回一个全新的重加密后数据对象,必须使用这个新对象执行解密操作。 - 解密结果未转换为字符串:解密得到的数字数组是二进制数据,需要转成字符串才能还原原文本内容。
修正后的代码
// 加密原始消息 let obj = PRE.encryptData(pk_A, "test data"); console.log(obj); // 生成A到B的重加密密钥 let rk = PRE.generateReEncrytionKey(sk_A, pk_B); // 接收重加密后的结果(核心修正点) let reEncryptedObj = PRE.reEncryption(rk, obj); // 使用B的私钥解密重加密后的数据 let decryptData = PRE.decryptData(sk_B, reEncryptedObj); // 将二进制数组转换为原文本 let originalText = new TextDecoder().decode(decryptData); console.log(originalText); // 输出: test data
补充说明
如果decryptData是普通数字数组(而非Uint8Array),可以用以下方式转换:
let originalText = String.fromCharCode(...decryptData);
内容的提问来源于stack exchange,提问作者ngoni mudzudzu
相关产品推荐
相关产品推荐

