El formato de billetera encriptada de Blockchain.info se describe como:
AES cifra toda la carga útil de JSON con la contraseña de los usuarios, que luego se codifica como base64. No se utiliza sal para el cifrado de un solo paso. Las especificaciones exactas de AES son 10 rondas de relleno PBKDF2, Modo Bloque CBC ISO10126.
Sin embargo, al tratar de verificar mis propias exportaciones cifradas, parece que esa no es toda la información (o es correcta). Creo que parte del problema está en cómo la contraseña del usuario se expande a una clave de entrada para el cifrado AES/Rijndael.
Bien, luego de investigar la herramienta de restauración provista (¡gracias Lohoris por señalarla!), llegué a las siguientes respuestas a mis preguntas:
MCRYPT_RIJNDAEL_128
para funciones PHP mcrypt )Tenga en cuenta que si usa las funciones de extensión de PHP mcrypt
(como lo estaba intentando), debe usar el mdecrypt_generic()
método en lugar de mcrypt_decrypt()
, ya que Blockchain usa el relleno ISO10126, y la mcrypt
extensión solo usará "relleno cero". A continuación, debe deshacer el relleno del resultado por separado.
Si bien no tengo una respuesta directa a sus preguntas, supongo que puede encontrarlas buscando la fuente del script de restauración .
MedianocheRelámpago