使用node上的crypto-js加密的数据能否使用react上的同一模块解密?
问题的出现原因是在使用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进行加密处理。