Инструмент расшифровки AES
Расшифруйте AES-128/192/256: данные OpenSSL «Salted__» (U2FsdGVkX1…), результат CryptoJS или сырой hex-ключ и IV в режимах CBC, GCM, CTR, CFB, OFB, ECB.
Результат — формат OpenSSL «Salted__» в Base64: случайная соль из 8 байт, затем шифротекст. Ключ и IV выводятся из парольной фразы и соли, поэтому один и тот же текст каждый раз шифруется по-разному. Эквивалентная команда:
openssl enc -aes-256-cbc -d -md md5 -a -A -k '…'Работает полностью в вашем браузере. Ваши данные никуда не загружаются.
Что такое Расшифровка AES?
Расшифровывает шифротекст AES в браузере. Понимает формат OpenSSL «Salted__» (строки Base64, начинающиеся с U2FsdGVkX1), который создают openssl enc и CryptoJS.AES.encrypt(text, passphrase), а также сырой шифротекст с hex-ключом и IV в режимах CBC, CFB, CTR, OFB, ECB или GCM с аутентификацией. Дополнение проверяется, поэтому при неверном ключе вы увидите ошибку, а не мусор.
Как пользоваться Расшифровка AES
- Выберите тот же Источник ключа, что и при шифровании: Парольная фраза (совместимо с OpenSSL) для данных
U2FsdGVkX1…(«Salted__») или Сырой ключ + IV (hex) для сырого шифротекста. - Введите парольную фразу (и тот же Получение ключа) либо hex-ключ и IV.
- Задайте те же Режим и Дополнение, что у отправителя, и вставьте Шифротекст (Base64 или Hex).
- Нажмите Расшифровать. Оставьте вывод как Текст (UTF-8) или переключите на Hex, если открытый текст двоичный.
Пример
U2FsdGVkX19HHh9Vv809WnL0M8IWPgnpihePLw8JpDQ= (passphrase "secret", AES-256, CBC, EVP_BytesToKey MD5)
Hello, World!
Шифротекст создан командой openssl enc -aes-256-cbc -md md5 -a -k secret.
Когда использовать Расшифровка AES
Используйте, чтобы прочитать данные, зашифрованные OpenSSL или CryptoJS, отладить ошибку расшифровки в своём приложении или проверить тестовые векторы. Нужна верная парольная фраза или ключ: инструмент не восстанавливает потерянные ключи и не взламывает AES. Если шифротекст получен из другого продукта (ZIP, база данных, менеджер паролей), у него обычно свой формат контейнера, и здесь он не расшифруется.
Как работает Расшифровка AES
Для данных с парольной фразой первые 16 байт должны быть Salted__ плюс 8-байтовая соль. Ключ и IV заново выводятся из парольной фразы и соли через EVP_BytesToKey (MD5) или PBKDF2-HMAC-SHA256 с вашим числом итераций — точно так же, как это делает openssl enc -d — после чего расшифровывается остальное. С сырым ключом hex-ключ и IV используются напрямую. После расшифровки CBC/ECB дополнение PKCS#7 проверяется побайтно: несовпадение почти всегда означает неверные ключ, IV, режим или длину ключа. В GCM 16-байтовый тег в конце проверяется Web Crypto до того, как будет показан открытый текст.
Распространенные Случаи Использования
- Расшифровать строку
U2FsdGVkX1…изopenssl enc -aes-256-cbc -a - Проверить значение, зашифрованное
CryptoJS.AES.encryptв веб-приложении - Проверить шифротекст AES-GCM с тегом, созданный вашим сервером
- Выяснить, какие длина ключа или режим использованы, перебрав вероятные настройки
- Расшифровать тестовые данные при отладке API или интеграции
Примечание по Безопасности
Расшифровка выполняется локально: парольные фразы и открытый текст не покидают ваше устройство. Только GCM доказывает, что данные не были изменены.
Часто Задаваемые Вопросы
Что значит «Invalid padding» или «неверная парольная фраза»?
Последний расшифрованный блок не заканчивается корректным дополнением PKCS#7. Проверьте парольную фразу, длину ключа (128/192/256), режим и получение ключа (MD5 или PBKDF2 и число итераций). OpenSSL 1.1+ по умолчанию использует -md sha256 без -pbkdf2, и это здесь не поддерживается — зашифруйте заново с -md md5 или -pbkdf2.
Расшифровывает ли он результат CryptoJS?
Да. CryptoJS.AES.encrypt(text, "passphrase").toString() использует тот же формат Salted__ с AES-256-CBC и EVP_BytesToKey/MD5 — это настройка по умолчанию.
Мой шифротекст не начинается с U2FsdGVkX1. Что делать?
Значит, он зашифрован сырым ключом. Переключите Источник ключа на Сырой ключ + IV (hex) и введите ключ и IV, которые использовала программа. Некоторые программы дописывают IV в начало шифротекста; отделите его и введите в поле IV.
Почему результат расшифровки выглядит как случайные символы?
В потоковых режимах (CTR, CFB, OFB) нет дополнения, которое можно проверить, поэтому неверный ключ даёт случайные байты. Инструмент сообщает о некорректном UTF-8; переключите вывод на Hex, если ожидаете двоичные данные.