Клиент отправил мне зашифрованное сообщение, используя функцию Cipher.encrypt () (с какого-то неизвестного мне языка программирования), как описано ниже:
var key : String = "I deleted the key intentionally";
var encodedKey : Bytes = Encoding.toBase64(new Bytes(key, "UTF8"));
var salt : String = "263BC60258FF4876";
var message : String = "1234567891234567";
var encryptAlgorithm : String = "AES/CBC/PKCS5Padding";
var encryptedMessage : Cipher = new Cipher();
encryptedMessage = encryptedMessage.encrypt(message, encodedKey, encryptAlgorithm, salt, 1);
Мне нужно расшифровать сообщение, чтобы извлечь данные из него с помощью PHP.
Я пытался использовать функцию php mcrypt_decrypt:
string mcrypt_decrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )
Но я не смог расшифровать сообщение, так как две функции имеют разные аргументы.
Так есть ли у кого-нибудь предложения относительно того, как расшифровать сообщение с помощью PHP?
Следующая строка не имеет смысла, кажется, «назад».
var encodedKey : Bytes = Encoding.toBase64(new Bytes(key, "UTF8"));
Предполагая, что ключ был закодирован в Base64 (что разумно), можно было бы декодировать его в байтовый массив и Encoding.toBase64
кажется неверным. Но это квест, так как язык неизвестен, спросите клиента, что это за язык.
Затем кажется, что сообщение было зашифровано с заполнением PKCS # 5, и mcrypt не поддерживает это. Есть несколько решений: 1. Удалите отступы в своем коде PHP. 2. Используйте лучшую библиотеку, которая поддерживает заполнение PKCS # 5, такую как разрядить.
Ценный salt
вероятно, IV (Вектор инициализации) плохо назван.
Других решений пока нет …