【问题标题】:How to decrypt AES with CryptoJS如何使用 CryptoJS 解密 AES
【发布时间】:2017-01-11 16:45:29
【问题描述】:

我尝试了一段时间来解密使用 Java 应用程序的 AES 中的消息,但它永远无法正常工作。有人可以帮我吗?

var options = { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 };  

        /*** encrypt */  
        var json = CryptoJS.AES.encrypt("Message", "KEY", options);  
        var ciphertext = json.ciphertext.toString(CryptoJS.enc.Base64);  
            console.log("chiper text ", ciphertext);

        /*** decrypt */  
        var decrypted = CryptoJS.AES.decrypt(json, "KEY", options);  
        var plaintext = decrypted.toString(CryptoJS.enc.Utf8);  
            console.log("decrypted ", plaintext);

但它总是生成不同的密文,从我的数据库中永远不会相同。

【问题讨论】:

  • 欢迎来到 Stack Overflow!由于您没有向我们展示错误和 Java 代码,因此可能存在许多错误:错误的密钥、错误的编码、不完整/过满的密文。您应该显示加密代码并给出您使用的示例值。否则,很容易猜测此代码(或加密代码)可能有什么问题。简而言之,请创建一个Minimal, Complete, and Verifiable exampleedit 您的问题以包含它。

标签: javascript encryption cryptography cryptojs


【解决方案1】:
var CryptoJS = require("crypto-js");

var key = CryptoJS.enc.Utf8.parse('b75524255a7f54d2726a951bb39204df');
var iv  = CryptoJS.enc.Utf8.parse('1583288699248111');
var text = "My Name Is Nghĩa";


var encryptedCP = CryptoJS.AES.encrypt(text, key, { iv: iv });
var decryptedWA = CryptoJS.AES.decrypt(encryptedCP, key, { iv: iv});
var cryptText = encryptedCP.toString();
console.log(cryptText);
console.log(decryptedWA.toString(CryptoJS.enc.Utf8));

//Decode from text    
var cipherParams = CryptoJS.lib.CipherParams.create({
     ciphertext: CryptoJS.enc.Base64.parse(cryptText )
});
var decryptedFromText = CryptoJS.AES.decrypt(cipherParams, key, { iv: iv});
console.log(decryptedFromText.toString(CryptoJS.enc.Utf8));

【讨论】:

    【解决方案2】:

    试试这个来加密数据

    var data = CryptoJS.AES.encrypt(message, key);
    data = data.toString()
    

    然后像这样解密

    var decr = CryptoJS.AES.decrypt(data, key);
    decr = decr.toString(CryptoJS.enc.Utf8);
    

    【讨论】:

    • 请不要回答尚未完全确定的问题。当/如果 OP 用缺少的细节编辑他们的问题时,你的答案将会过时,你会陷入尴尬的境地,仍然想保留你的答案,但代价是未来的读者会感到困惑,因为没有直接的您的答案和问题之间不再有联系。
    • 我明白了,解密时需要传递CryptoJS.enc.Utf8。由于这个答案,我发现了它!
    猜你喜欢
    • 2014-08-17
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多