gpt4 book ai didi

Javascript 加密 SJCL GCM 无法解密我加密的内容

转载 作者:行者123 更新时间:2023-11-28 01:33:52 34 4
gpt4 key购买 nike

我目前正在尝试 SJCL,但在加密/解密方面遇到问题。由于缺乏好的例子,我想出了您在下面看到的内容,但它不起作用。有人能指出我做错了什么吗?提前致谢。

<html>
<!-- sjcl made with: ./configure --with-all -compress=none && make -->
<script type="text/javascript" src="sjcl.js"></script>
<body>

<script>
var p = {
"iv": "PnWtrKCP2DKcLyNC18RKAw==",
"ts": 128,
"mode": "gcm",
"adata": "You can read me",
"cipher": "aes",
"key": "QiJysyALRxUESl18XKl0FcpXQJvFB2Z3Q3A61tdNNM0=" // pbkdf2 key
};

var prp = new sjcl.cipher[p.cipher](sjcl.codec.base64.toBits(p.key));
var plain = "My plaintext";

var ct = sjcl.codec.base64.fromBits(sjcl.mode[p.mode].encrypt(prp, sjcl.codec.bytes.toBits(plain), p.iv, p.adata, p.ts));
var pt = sjcl.codec.base64.fromBits(sjcl.mode[p.mode].decrypt(prp, sjcl.codec.base64.toBits(ct), p.iv, p.adata, p.ts));

document.writeln("ct: " + ct + "<br>");
document.writeln("pt: " + pt + "<br>");
</script>

<hr><pre>
Results in:
encrypted: 5Z2QQ9s6gfORlr6qLvlwjO/J+/TbfSbOs79c4w==
decrypted: AAAAAAAAAAAAAAAA
</pre></body></html>

最佳答案

我认为你的问题是sjcl.codec.bytes.toBits(plaintext)。如果你单独运行它,你会得到[0,0,0]。我认为您需要 sjcl.codec.utf8String.toBits(plaintext)

如果您有一个实际的字节(八位字节)数组(如 [255, 34, 12, 16]),则可以使用 bytes.toBits,但在本例中您使用的是字符串,因此需要进行不同的转换。

此外,我在使用字符串作为 IV 时遇到了问题,您可能希望在将其传入 (base64.toBits(iv)) 之前通过与 key 相同的转换来运行它。

关于Javascript 加密 SJCL GCM 无法解密我加密的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21775317/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com