我有一个通过直接 IP 接收信息的 TCP 服务器。我收到以 AES-128-CBC 加密的此信息。(十六进制字节缓冲区)然后我将缓冲区转换为一串没有空格的十六进制字节。“原始消息”
我通过了 IV,即加密消息,并且我对密钥进行了硬编码。我仍然无法正确解密消息。我通常会得到一个完全不同的解密或一个空字符串。我假设我的一个或多个变量格式错误?
本周之前我对密码学的经验为零,但这是我的任务。因此,如果问题很小,我深表歉意。
我正在从 C 语言的同事那里接收数据。我担心 CryptoJS 与我传递的数据不兼容?任何帮助深表感谢。
代码.js
const CryptoJS = require("crypto-js");
var originalMsg = "5303F15FB8317A010300000000000001F3E0C003E24340E4E4"
var encrypted = "00000003C4302B119E7BB9C36655F6BCDF251808C6748A11949A89309AD17600F6164FF45CDC"
var key = "242E389B1672B4ECEA92FE7466DF3A52"
var iv = "0000E34500FF0000000000FF00000000"
var decryptData2 = function(encryptedData) {
var C = CryptoJS;
var Key = CryptoJS.enc.Hex.parse("242E389B1672B4ECEA92FE7466DF3A52")
var IV = CryptoJS.enc.Hex.parse("0000E34500FF0000000000FF00000000")
// I have tried
var decryptedText = C.AES.decrypt(encryptedData, Key, {
iv: IV,
mode: C.mode.CBC,
padding: C.pad.Pkcs7
});
return decryptedText.toString(CryptoJS.enc.Utf8);
}
var result = decryptData2(CryptoJS.enc.Hex.parse("00000003C4302B119E7BB9C36655F6BCDF251808C6748A11949A89309AD17600F6164FF45CDC"))
console.log(result);
编辑:更新 iv 和加密变量
//old vars
encrypted ="00000003C4302B119E7BB9C36655F6BCDF251808C6748A11949A89309AD17600F6164FF45CDC"
iv = "02C4100000E34500FF0000000000FF00"
吃鸡游戏
相关分类