У меня есть 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 Encryption (Шаг 4), но кажется, что AES
не поддерживает PKCS5Padding
, но PKCS7Padding
.
Я думаю, что ошибаюсь, когда передаю KEY & IV на CryptoJS
.
Любая помощь будет принята с благодарностью.