【问题标题】:Javascript crypto SJCL GCM not decrypting what I encryptedJavascript 加密 SJCL GCM 没有解密我加密的内容
【发布时间】:2014-03-13 13:48:45
【问题描述】:

我目前正在尝试使用 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>

【问题讨论】:

    标签: javascript encryption google-cloud-messaging sjcl


    【解决方案1】:

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

    如果您有一个实际的字节(八位字节)数组(如[255, 34, 12, 16]),您将使用bytes.toBits,但在这种情况下您使用的是字符串,因此需要进行不同的转换。

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

    【讨论】:

    • 我需要帮助完成准备支付的任务,你可以告诉电子邮件或Skype
    猜你喜欢
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2023-01-31
    相关资源
    最近更新 更多