我正在使用俄歇库来测试AES加密。当我试图解密密文时,我会得到以下错误
错误:不支持类似数组的对象在(/data/data/com.suspendresume/files/nodejs-project/node_modules/aes-js/index.js:51:15) at coerceArray ModeOfOperationCBC at MyEmitter.rn_bridge.channel.on (/data/data/com.suspendresume/files/nodejs-project/main.js:76:15) emitOne (events.js:115:13) at MyEmitter.emit (events.js:210:7),Immediate.setImmediate onImmediate at runCallback (timers.js:781:20) at tryOnImmediate (timers.js:743:5) at processImmediate immediateCallback
以下是我的代码
encryptedHex ='yRe2x6Gf2uVzfesp1I7ISkkAjTo2xoH2SPSqXzdWKHg+HhosYblfTFUJVoPVgpyf'
iv= 'ec8902010adc3d63';
key='aa54c24fae5e52a5861c80f466a90922'
key= aesjs.utils.hex.toBytes(key)
// When ready to decrypt the hex string, convert it back to bytes
var encryptedBytes = aesjs.utils.hex.toBytes(encryptedHex);
// The cipher-block chaining mode of operation maintains internal
// state, so to decrypt a new instance must be instantiated.
var aesCbc = new aesjs.ModeOfOperation.cbc(key, iv);
var decryptedBytes = aesCbc.decrypt(encryptedBytes);
// Convert our bytes back into text
var decryptedText = aesjs.utils.utf8.fromBytes(decryptedBytes);
console.log(decryptedText);请帮我解决这个问题
发布于 2018-12-24 12:01:16
您的代码有几个问题:
encryptedHex的变量不包含十六进制,但包含base64。十六进制只允许数字和字母and,但字符串包含其他字母,甚至+。我已经解决了这样的问题:
aesjs.utils.hex.toBytes将其转换为字节结果是这样的。它应该在控制台中打印Hello:
encryptedB64 = 'kcGz8P/m0lRRRxcT3tJiSw==';
iv = '6162636465666768696a6b6c6d6e6f70';
iv = aesjs.utils.hex.toBytes(iv);
key = '31323334353637383930313233343536';
key = aesjs.utils.hex.toBytes(key);
// When ready to decrypt the base64 string, convert it back to bytes
var encryptedBytes = Uint8Array.from(atob(encryptedB64), c => c.charCodeAt(0));
// The cipher-block chaining mode of operation maintains internal
// state, so to decrypt a new instance must be instantiated.
var aesCbc = new aesjs.ModeOfOperation.cbc(key, iv);
var decryptedBytes = aesCbc.decrypt(encryptedBytes);
// Convert our bytes back into text
var decryptedText = aesjs.utils.utf8.fromBytes(decryptedBytes);
console.log(decryptedText.trimEnd('\0'));<script src="https://cdnjs.cloudflare.com/ajax/libs/aes-js/3.1.2/index.min.js"></script>
https://stackoverflow.com/questions/53911668
复制相似问题