使用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
相关产品推荐
相关产品推荐

