Das verschlüsselte Wallet-Format von Blockchain.info wird wie folgt beschrieben :
AES verschlüsselt die gesamte JSON-Nutzlast mit dem Benutzerkennwort, das dann als base64 codiert wird. Für die Single-Pass-Verschlüsselung wird kein Salt verwendet. Die genauen AES-Spezifikationen sind 10 Runden PBKDF2, Blockmodus CBC ISO10126-Padding.
Beim Versuch, meine eigenen verschlüsselten Exporte zu überprüfen, scheint es jedoch, dass dies nicht alle Informationen (oder korrekt) sind. Ich denke, ein Teil des Problems besteht darin, wie das Passwort des Benutzers zu einem Eingabeschlüssel für die AES/Rijndael-Chiffre erweitert wird.
Okay, nachdem ich das bereitgestellte Wiederherstellungstool untersucht hatte (danke Lohoris für den Hinweis!), kam ich zu den folgenden Antworten auf meine Fragen:
MCRYPT_RIJNDAEL_128
für PHP-mcrypt- Funktionen)Beachten Sie, dass Sie bei Verwendung von PHP - mcrypt
Erweiterungsfunktionen (wie ich es versucht habe) die mdecrypt_generic()
Methode anstelle von verwenden mcrypt_decrypt()
müssen, da Blockchain ISO10126-Padding verwendet und die mcrypt
Erweiterung nur "Zero Padding" verwendet. Sie müssen das Ergebnis dann separat entpolstern.
Ich habe zwar keine direkte Antwort auf Ihre Fragen, aber ich denke, Sie können diese finden, wenn Sie sich die Quelle des Wiederherstellungsskripts ansehen .
MitternachtBlitz