[英]How to decipher string in node js which is encrypted in crypto js in javascript
我的客戶端代碼:
data.username = CryptoJS.AES.encrypt(user.username, "password");
data.password = CryptoJS.AES.encrypt(user.password, "password");
然后我將“數據”發送到express.js服務器
var user = req.body;
var decipher = crypto.createDecipher('aes256', "password");
var decrypted = decipher.update(user.username, 'hex', 'utf-8');
decrypted += decipher.final('utf-8');
我收到此錯誤:
Error: DecipherInit error
at new Decipher (crypto.js:368:17)
at Object.Decipher (crypto.js:365:12)
CryptoJS的帶密碼的encrypt
函數使用相同的EVP_BytesToKey
函數node.js的createCipher
,重要的區別在於CryptoJS使用隨機鹽來導出而node不使用 (強調我):
注意:createCipher使用OpenSSL函數EVP_BytesToKey導出密鑰,並將摘要算法設置為MD5,一次迭代,並且沒有salt 。
您可以在可能的節點中直接使用CryptoJS,因為CryptoJS沒有任何依賴關系,或者您自己在兩端進行密鑰派生並使用crypto.createCipheriv
。 如果使用前者,則必須另外將用戶名和密碼加密的內容傳遞給節點。
請注意, data.username
是包含salt和IV的CryptoJS cipherParams對象,但是當您將其轉換為帶有data.username.toString()
字符串時,不再包含salt了,但是IV了。 這不是data
,你會投入Node.js的功能。 而是發送data.username.ciphertext
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.