在node上使用crypto-js加密的数据可以在react上使用相同的模块解密吗?

cgfeq70w  于 2023-08-04  发布在  Node.js
关注(0)|答案(1)|浏览(129)

我有一个JSON,我在Node后端用AES加密了它,然后把它发送到我的React前端。当我尝试在前端解密它时,我得到一个错误

"Malformed Utf-8" data error

字符串
当加密/解密在它们各自的边界中按预期工作时。但是当我试图让它成为一个跨平台的东西时,它失败了。那么问题出在哪里呢?

7kqas0il

7kqas0il1#

是的,你可以这样做,加密节点上的数据并将其发送到react,加密react上的数据并将其发送到你的节点服务器。我是这样做的:
在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);
    };
}

字符串
在节点中:

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", decryoted_string);
};


请注意,我在示例中使用纯文本格式的秘密短语,但建议使用环境变量,如de process. env. YOURSECRETPHRASE。请注意,管理UTF-8格式以再次以纯文本形式查看结果非常重要。
您还必须检查您在package.json中安装了相同版本的crypto-js包。就是这样,如果你将敏感数据保存在数据库中,建议使用bcrypt包中的bcrypt算法或使用crypto-js中的另一个模块(如sha-256)对其进行散列。

相关问题