React Native CryptoJS 为 AES-256-CBC 解密提供空值
React Native CryptoJS giving empty value for AES-256-CBC decryption
我正在使用这个 https://github.com/imchintan/react-native-crypto-js package for React Native CryptoJS and I used this online tool https://www.javainuse.com/aesgenerator 来生成这个示例数据:
const encryptedData = {
cipher: "OuCmv1nXCzfy+529oeJU8g==",
iv: "1234123412341234",
key: "56785678567856785678567856785678"
}
虽然加密选择的模式是 CBC
,但密钥大小是 256
位,输出格式是 base64
在 react native 这就是我解密它的方式:
let bytes = CryptoJS.AES.decrypt(encryptedData.cipher, encryptedData.key);
let originalText = bytes.toString(CryptoJS.enc.Utf8);
console.log("Text is: " + originalText);
但我得到的只是 Text is:
。
当您提供 CryptoJS Cipher a 'key' 实际上是一个字符串时,它会将其视为密码并使用与指定的 OpenSSL enc
兼容的基于密码的密钥派生 in the documentation. You need to convert the key and iv to WordArray
s much as shown just above that,另外我找不到如何使 'configurable' 解析工作,所以我也如下所示显式解析。
const CryptoJS = require('crypto-js');
var key = CryptoJS.enc.Latin1.parse("56785678567856785678567856785678")
var iv = CryptoJS.enc.Latin1.parse("1234123412341234")
var ctx = CryptoJS.enc.Base64.parse("OuCmv1nXCzfy+529oeJU8g==")
var enc = CryptoJS.lib.CipherParams.create({ciphertext:ctx})
console.log( CryptoJS.AES.decrypt (enc,key,{iv:iv}) .toString(CryptoJS.enc.Utf8) )
->
Talha
从技术上讲,decrypt
的结果与 parse
一样,是 WordArray
,因此将其称为 bytes
有点误导和混淆。
我正在使用这个 https://github.com/imchintan/react-native-crypto-js package for React Native CryptoJS and I used this online tool https://www.javainuse.com/aesgenerator 来生成这个示例数据:
const encryptedData = {
cipher: "OuCmv1nXCzfy+529oeJU8g==",
iv: "1234123412341234",
key: "56785678567856785678567856785678"
}
虽然加密选择的模式是 CBC
,但密钥大小是 256
位,输出格式是 base64
在 react native 这就是我解密它的方式:
let bytes = CryptoJS.AES.decrypt(encryptedData.cipher, encryptedData.key);
let originalText = bytes.toString(CryptoJS.enc.Utf8);
console.log("Text is: " + originalText);
但我得到的只是 Text is:
。
当您提供 CryptoJS Cipher a 'key' 实际上是一个字符串时,它会将其视为密码并使用与指定的 OpenSSL enc
兼容的基于密码的密钥派生 in the documentation. You need to convert the key and iv to WordArray
s much as shown just above that,另外我找不到如何使 'configurable' 解析工作,所以我也如下所示显式解析。
const CryptoJS = require('crypto-js');
var key = CryptoJS.enc.Latin1.parse("56785678567856785678567856785678")
var iv = CryptoJS.enc.Latin1.parse("1234123412341234")
var ctx = CryptoJS.enc.Base64.parse("OuCmv1nXCzfy+529oeJU8g==")
var enc = CryptoJS.lib.CipherParams.create({ciphertext:ctx})
console.log( CryptoJS.AES.decrypt (enc,key,{iv:iv}) .toString(CryptoJS.enc.Utf8) )
->
Talha
从技术上讲,decrypt
的结果与 parse
一样,是 WordArray
,因此将其称为 bytes
有点误导和混淆。