使用node上的crypto-js加密的数据能否使用react上的同一模块解密?

8 浏览
0 Comments

使用node上的crypto-js加密的数据能否使用react上的同一模块解密?

我有一个JSON,我在Node后端使用一个密钥对其进行AES加密,然后将其发送到React前端。当我尝试在前端解密时,出现错误"Malformed Utf-8" data error。当在各自的边界内进行加密/解密时,一切都按预期工作。但当我尝试将其变成跨平台的东西时,就失败了。所以问题出在哪里?

0
0 Comments

问题的出现原因是在使用crypto-js加密数据时,希望能够在node上使用该模块进行解密是否可行。解决方法是在react中使用crypto-js加密数据并发送到node服务器,然后在node中使用相同的crypto-js模块进行解密。

在react中,我们可以使用以下代码来加密数据并发送:

import CryptoJS from "crypto-js";
function whatever(){        
    var passPhrase = process.env.YOURSECRETPHRASE || "Secret Phassphrase";    
    const handleSubmit(somedata){    
        var encrypted_data =CryptoJS.AES.encrypt(somedata,passPhrase).toString(); 
        send(encrypted_data);
    };
}

在node中,我们可以使用以下代码来解密数据:

const CryptoJS = require("crypto-js");
function whatever(dataString){
    var passPhrase = process.env.YOURSECRETPHRASE || "Secret Phassphrase";
    console.log("encrypted", dataString);
    var decrypted = CryptoJS.AES.decrypt(dataString, passPhrase);
    var decrypted_string = decrypted.toString(CryptoJS.enc.Utf8);
    console.log("decrypted", decrypted_string);
};

需要注意的是,示例中的密钥以明文形式呈现,但建议使用环境变量(如process.env.YOURSECRETPHRASE)来存储密钥。同时,为了以纯文本形式查看结果,重要的是要管理utf-8格式。

此外,还需要检查在package.json中是否安装了与npm中的crypto-js相同版本的包。如果要保存敏感数据到数据库中,建议使用bcrypt包的bcrypt算法进行哈希处理,或者使用crypto-js的其他模块如sha-256进行加密处理。

0