AES 128 解密:CryptoJS.enc.Latin1 的第一个字符格式错误

阿南德

我有一个已编码的字符串,需要对其进行解密。我使用过 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>

小提琴 - https://jsfiddle.net/guptasanchit90dev/p00fhmp4/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AES 128解密失败

来自分类Dev

AES-128 CBC解密

来自分类Dev

使用AES-128加密和解密字符串

来自分类Dev

带有字符串输入的快速AES 128解密

来自分类Dev

CryptoJS AES 256 ECB解密

来自分类Dev

使用CryptoJS解密openssl AES

来自分类Dev

CryptoJS使用密码对AES进行加密,但PHP解密需要一个密钥

来自分类Dev

AES_128_CBC OpenSSL解密

来自分类Dev

无法在iOS中解密AES128

来自分类Dev

使用cryptoJS从非常相似的AES实现中获取2个不同的解密值(为第16个字符获取错误的结果值)

来自分类Dev

AES 128 位 & AES 256 位加密解密

来自分类Dev

如何使用Java从CryptoJS解密加密的AES-256字符串?

来自分类Dev

AES在Cryptojs中加密,在Pycrypto中解密

来自分类Dev

如何使用AES使用CryptoJS解密?

来自分类Dev

将AES解密从CryptoJS移植到PyCrypto

来自分类Dev

解密AES更改最后一个字母

来自分类Dev

tiny-aes-c AES CTR 128在某些情况下会切断解密的字符串

来自分类Dev

Django字符latin1 mysql

来自分类Dev

在Oracle中使用AES 128位对十六进制字符串进行解密

来自分类Dev

Java(Android)AES-128-CBC解密为纯文本不一致

来自分类Dev

IncrediBuild-错误:字符串的第一个字符应为“ 0”或“ 1”

来自分类Dev

在 Flutter 上解密 AES 输入,在 web 上使用 cryptoJS AES

来自分类Dev

删除O(1)中字符串的第一个字符

来自分类Dev

Java解密中的AES 128加密(PHP中)

来自分类Dev

从PHP在Objective-C中解密AES128 / CBC

来自分类Dev

如何用Crypto-JS解密AES 128-CBC?

来自分类Dev

使用OpenSSL进行AES_128_CBC加密/解密

来自分类Dev

如何用Crypto-JS解密AES 128-CBC?

来自分类Dev

在iOS上解密AES-128加密的数据

Related 相关文章

热门标签

归档