У меня проблема с данными дешифрования, зашифрованными в cryptojs. Иногда это иногда работает, если работает, оно возвращает «Сообщение», но если dosent возвращает мусор.AES - Crypto JS & PHP
var salt = CryptoJS.lib.WordArray.random(128/8);
var key256Bits500Iterations = CryptoJS.PBKDF2("password", salt, { keySize: 256/32, iterations: 5 });
var iv = CryptoJS.enc.Hex.parse('1011121c1d1e1f');
var encrypted = CryptoJS.AES.encrypt("Message", key256Bits500Iterations, { iv: iv });
var data_base64 = encrypted.ciphertext.toString(CryptoJS.enc.Base64);
var iv_base64 = encrypted.iv.toString(CryptoJS.enc.Base64);
var key_base64 = encrypted.key.toString(CryptoJS.enc.Base64);
PHP
$encrypted = base64_decode($_POST['data']);/
$iv = base64_decode($_POST['iv']);
$key = base64_decode($_POST['key']);
$plaintext = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, rtrim($key, "\t\0\r\n "), rtrim($encrypted, "\t\0\r\n "), MCRYPT_MODE_CBC, $iv), "\t\0\r\n ");
Я хотел бы остаться на cryptoJS.
мусор нормальный, если вы делаете что-то неправильно в расшифровке. вы можете использовать любой ключ, который вы хотите для дешифрования, но только один ключ снова даст вам оригинальный текст. –
Ваш IV слишком короткий. Это должно быть 16 байт или 32 шестнадцатеричных символа. Вы должны использовать случайный IV. Если вы отправляете ключ с данными, зачем даже его шифровать? –
Это просто для тестирования, во-первых, я просто пытаюсь создать работоспособное шифрование php <> javascript. Также попробовали теперь сгенерировать 32char iv, и ошибка все равно возникает, иногда она иногда срабатывает. – Daniel