You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:55:21