我有一个JSON,我在Node后端用AES加密了它,然后把它发送到我的React前端。当我尝试在前端解密它时,我得到一个错误
"Malformed Utf-8" data error
字符串当加密/解密在它们各自的边界中按预期工作时。但是当我试图让它成为一个跨平台的东西时,它失败了。那么问题出在哪里呢?
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)对其进行散列。
1条答案
按热度按时间7kqas0il1#
是的,你可以这样做,加密节点上的数据并将其发送到react,加密react上的数据并将其发送到你的节点服务器。我是这样做的:
在React中:
字符串
在节点中:
型
请注意,我在示例中使用纯文本格式的秘密短语,但建议使用环境变量,如de process. env. YOURSECRETPHRASE。请注意,管理UTF-8格式以再次以纯文本形式查看结果非常重要。
您还必须检查您在package.json中安装了相同版本的crypto-js包。就是这样,如果你将敏感数据保存在数据库中,建议使用bcrypt包中的bcrypt算法或使用crypto-js中的另一个模块(如sha-256)对其进行散列。