gpt4 book ai didi

javascript - AES 128 解密 : First char of CryptoJS. enc.Latin1 格式错误

转载 作者:行者123 更新时间:2023-11-28 10:42:31 25 4
gpt4 key购买 nike

我有一个已编码的字符串,需要对其进行解密。我使用了 Crypto JS,经过一定的研究,我可以达到以下解决方案。

data = "+JdTb5BOloxaBHQlTw6NPLNV9lZix1OwhR3HF3IRtu2pdg/TLkrTw6Xu4JpKFlxE+zgOZavj0UynSZ+ojxmDXRbUlfyOc4YAncJVMXr28/AtfxZkNQoHbPIo7WxcSdidNE2k+DHZFcNNKOzYnvL1oDN4ezecs8Vo7K6vC5ZFLPUylXsi5sPsGye+TBbauPX+/wXa3hWUJVMNk6HUghW7l4N5Ei7HnrxLkFSFnz+9YUKYbFMEgV6wd9debHrpyytVhA3x2+Eyn5KnQ7iNJKQsNw==";
key = "062ec23950a55b9f8b21b0f9d45ca853";

// Decode the base64 data so we can separate iv and crypt text.
var rawData = atob(data);
var iv = rawData.substring(0,32);
var crypttext = rawData.substring(32);

// Decrypt...
var plaintextArray = CryptoJS.AES.decrypt(
{ ciphertext: CryptoJS.enc.Latin1.parse(crypttext) },
CryptoJS.enc.Hex.parse(key),
{ iv: CryptoJS.enc.Latin1.parse(iv) }
);

var test = CryptoJS.enc.Latin1.stringify(plaintextArray);
console.log(test.toString())
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/aes.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>

上面的输出是

8«ÊWÒϬR¶jÛWY#ESPONSE_TEXT>
<RESULT>OK</RESULT>
<RESULT_CODE>-1</RESULT_CODE>
<TERMINATION_STATUS>SUCCESS</TERMINATION_STATUS>
<COUNTER>2</COUNTER>
</RESPONSE>

而不是

   <RESPONSE_TEXT>
<RESULT>OK</RESULT>
<RESULT_CODE>-1</RESULT_CODE>
<TERMINATION_STATUS>SUCCESS</TERMINATION_STATUS>
<COUNTER>2</COUNTER>
</RESPONSE>

我无法找到为什么 8«ÊWÒÏØR¶jÛWY 会出现结果。请帮助找到丢失的线程。

最佳答案

使用 - CryptoJS.lib.WordArray.random(128/8) 生成 iv

data = "+JdTb5BOloxaBHQlTw6NPH2KFaA1mUL2vEuOqHmteozJutLfH1fQrDn+OE8Y1LgoFNqTjpuELCLB1noWbQ9Dz2g6NcD2vPAd4okiYArXnz+YKhVaGcqw+FTThjTWadMD/KvpzZ7SlxBh7HpCbZ/KMmxsOOnuk2F8pVEV3pkJMUgxV36c/iN9C+aRHPt95XRKzfU5ISaoBIq+/9K4WzW6i8yI8r6sdyRDoRc2q/EXuvX5666vdP1yojm2yhaL+1EwgkkYRn+GLyYuzFN1yCi+OA==";
key = "062ec23950a55b9f8b21b0f9d45ca853";

// Decode the base64 data so we can separate iv and crypt text.
var rawData = atob(data);
var iv = CryptoJS.lib.WordArray.random(128/8);
var crypttext = rawData;


// Decrypt...
var plaintextArray = CryptoJS.AES.decrypt(
{
ciphertext: CryptoJS.enc.Latin1.parse(crypttext)
},
CryptoJS.enc.Hex.parse(key),
{
iv: CryptoJS.enc.Latin1.parse(iv),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}
);

var decrypted = CryptoJS.enc.Latin1.stringify(plaintextArray);
console.log(decrypted);
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>

fiddle - https://jsfiddle.net/guptasanchit90dev/p00fhmp4/

关于javascript - AES 128 解密 : First char of CryptoJS. enc.Latin1 格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49790225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com