Формат зашифрованного кошелька Blockchain.info описывается как:
AES шифрует всю полезную нагрузку JSON с помощью пароля пользователя, который затем кодируется как base64. Для однопроходного шифрования соль не используется. Точные спецификации AES: 10 раундов заполнения PBKDF2, блочный режим CBC ISO10126.
Однако при попытке проверить мой собственный зашифрованный экспорт кажется, что это не вся информация (или верная). Я думаю, что часть проблемы заключается в том, как пароль пользователя расширяется до ключа ввода для шифра AES/Rijndael.
Итак, изучив предоставленный инструмент восстановления (спасибо Lohoris за указание на него!), я пришел к следующим ответам на свои вопросы:
MCRYPT_RIJNDAEL_128
для функций PHP mcrypt ) .Обратите внимание: если вы используете функции расширения PHP mcrypt
(как я пытался), вам нужно использовать mdecrypt_generic()
метод, а не mcrypt_decrypt()
, поскольку Blockchain использует заполнение ISO10126, а mcrypt
расширение будет использовать только «нулевое заполнение». Затем вам нужно распаковать результат отдельно.
Хотя у меня нет прямого ответа на ваши вопросы, я думаю, вы можете найти тех, кто смотрит на исходный код сценария восстановления .
ПолночьМолния