CryptoJS шифрует AES с парольной фразой, но для расшифровки PHP требуется ключ

Я использую CryptoJS для шифрования строки:

function doHash(msg){ msg = String(msg); var passphrase = 'aggourakia'; var hash = CryptoJS.AES.encrypt(msg, passphrase); var ciphertext= hash.ciphertext.toString(); //return ciphertext instead of object return ciphertext; } 

Насколько я понимаю, CryptoJS использует кодовую фразу для генерации ключа , который затем используется для шифрования данных.

Однако я хотел бы расшифровать шифр с помощью функции PHP или, может быть, онлайнового инструмента, такого как: http://aesencryption.net/

Проблема в том, что они ожидают ключевой , а не кодовой фразы.

Как я могу напрямую предоставить ключ для CryptoJS AES, который я могу использовать на стороне сервера или любой онлайн-инструмент для дешифрования?

Дело в том, что мне уже очень сложно найти функции PHP, чтобы расшифровать шифры AES уже, и эта ключевая фраза / ключевая вещь добавляет сложности

Если вы хотите напрямую поставить ключ, вы также должны поставить IV . IV (вектор инициализации) необходим, поэтому он может быть XOR'ed с 1-м блоком сообщения. Тогда зашифрованный текст первого блока XOR'ed со вторым блоком сообщения и так далее. Это называется цепочкой шифрования (CBC) .

 var key = CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f'); var iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f'); var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv }); 

Это из документов CryptoJS https://code.google.com/p/crypto-js/#Custom_Key_and_IV

Вы можете генерировать ключи и IV с помощью PBKDF2, как писал @Narf. https://code.google.com/p/crypto-js/#PBKDF2

О PHP: mcrypt имеет шифр MCRYPT_RIJNDAEL_128, который является AES 128. MCRYPT_RIJNDAEL_192 и MCRYPT_RIJNDAEL_256 несовместимы с AES 192 и AES 256, поскольку AES использует 128-битный блок со всеми размерами ключей. Rijndael имеет настраиваемый размер блока. CryptoJS будет использовать 128-битную AES, если вы поставите 128-битный ключ, он будет использовать 256 бит, если вы используете функцию, которая принимает кодовую фразу.