#1418·gun

[错误] SEA.decrypt 无法解密 SEA.encrypt 的输出,其中加密的数据是格式不正确的 JSON 字符串

作者: nsreed创建于 2026年4月18日更新于 2026年4月18日

当我加密时,然后解密出"[hello there]"(一个字符串)的值,我期望解密值的值和类型都与输入值相匹配. 相反,被解密的值变为"[]"(一个空数组). 见以下例子:

zz
数据=`[你好]';
const = 等待 SEA.pair();
const enc = 等待 SEA. 加密(数据,对);
const dec = 等待SEA.decrypt(enc,对);
control.log( 'dec match data?) 控制台. ${dec {数据};
contail.log( 'data is ${data}};
a. 控制台.log(数据类型为${数据类型};
a. 控制台.log( 'dec is ${dec};
contail.log('JSON.stringify(dec)为${JSON.stringify(dec)};
control.log( 'type of Dec is ${of Dec}`') ;
a. 控制台.log(`Array.is Array (dec) 为${Array.is Array (dec)}});

产出

D 匹配数据吗 ? 虚假
数据是 [你好]
数据类型为字符串
决定是
JSON.stringify(dec) 是 [] (中文(简体) ).
数据类型为对象
Array.is 箭头( 度) 是真实的

当其他类型在字符串中出现时,这也是一个类似的问题,我期望SEA.decrypt () 的类型和值与 SEA. 加密 () 的输入匹配 。 如果这是个字符串,我期望一个有相同内容的字符串会出来,因为这是其他输入类型的行为. 第1188期试图解决这个问题,但这个例子过于具体,工作需要将原始字符串封装在一个对象中,这无助于我恢复具有这些特性的现有加密值。

我有一系列的加密字符串, 恰好看起来像JSON, 实际上是用户的文本输入, 现在我不清楚这些字符串是如何被解密的。

至于一个决议? 我同意在“SEA.decrypt”中的备选选项参数中添加“skipParse”之类的内容,以免打破后向兼容性? 或更新API和TS docs,以提及此行为,如果其意图/不可修复.