我有一个 API 可以调用,我必须使用 RSA/ECB/PKCS1 填充和 AES/CBC/PKCS5PADDING 加密我的数据。
Sample Data: {"KEY":"VALUE"}
步骤1:
I have to generate a random number of 16 digit. eg: '1234567890123456'
第2步:
Do RSA/ECB/PKCS1Padding to random number and base64Encode the result. we get "encrypted_key"
步骤 3:
Concatenate random number & data:
DATA = 1234567890123456{"KEY":"VALUE"}
第4步:
Do AES/CBC/PKCS5Padding on DATA (from Step 3) using random number(1234567890123456) as KEY & Base64Encoded random number as IV. we get "ENCRYPTED_DATA"
因此,对于第 1 步,我使用的是JSEncrypt
javascript 库。对于第 4 步,我正在使用CrytoJS.AES.encrypt()
函数。我很确定我的 JSEncrypt 函数运行良好,因为客户端能够解密它,但客户端无法解密我的数据。我觉得我在使用CryptoJS
.
有人可以正确指导我如何使用图书馆。
我正在做的是:
KEY = '1234567890123456'
IV = MTIzNDU2Nzg5MDEyMzQ1Ng== (result of btoa('1234567890123456') )
DATA = "1234567890123456{"KEY":"VAL"}"
cryptedData = Crypto.AES.encrypt(DATA, KEY, {iv: IV, mode: CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7})
我被告知要PKCS5Padding
在 AES/CBC 加密中使用(第 4 步),但似乎AES
不支持PKCS5Padding
但PKCS7Padding
。
我认为我将 KEY 和 IV 传递给CryptoJS
.
任何帮助将不胜感激。