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

使用Forge AES解密字符串仅获部分文本,如何获取完整内容?

AES解密不完整问题:JavaScript forge 对比 R digest::AES

问题现象

使用JavaScript的forge库解密AES密文时,仅能得到前22个字符的输出,但相同密文在R语言中通过digest::AES函数可完整解密。

我的JavaScript代码

seed = 'hi';
text = 'KQdciM892XEZXYC+jm4sWsijh/fQ4z/PRlpIHQG/+fM=';

function decrypt(seed, text){
  md = forge.md.sha256.create();
  md.update(seed);
  const key = md.digest().getBytes(32);
  const cypher = forge.util.createBuffer(forge.util.decode64(text), 'raw');
  
  console.log(cypher.toHex());
  
  var decipher = forge.cipher.createDecipher('AES-ECB', key);
  decipher.start();
  decipher.update(cypher);
  const result = decipher.finish();

  if(result){
    const out = decipher.output;
    console.log(out.toHex());
    const dec = forge.util.encodeUtf8(out);
    console.log(dec);
  }else{
    console.log('Bad key.');
  }
}

decrypt(seed, text);

待解密的原始明文(参考)

[1] 2

JS解密的不完整输出

[

### 能正常解密的R代码
```r
id = '123'
key = digest::digest(pp, algo='sha256', serialize = FALSE, raw = TRUE)
aes_e = digest::AES(key)

"KQdciM892XEZXYC+jm4sWsijh/fQ4z/PRlpIHQG/+fM=" |>
  base64enc::base64decode() |>
  aes_e$decrypt() 
# [1] "           \n\n\n```\n## [1] 2\n```\n\n"

已尝试操作

  • 参考forge官方文档示例调整代码
  • 切换至AES-CBC模式,问题依旧

需求

如何修改JavaScript代码,获取完整的解密文本?


内容的提问来源于stack exchange,提问作者richarddmorey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:15:21