Java: Base58-codierter String

Ich möchte diesen String Base58-codieren:

    56379c7bcd6b41188854e74169f844e8676cf8b8

Mein aktueller Java-Code sieht so aus:

    String test9 = "56379c7bcd6b41188854e74169f844e8676cf8b8";
    byte[] b2 = new BigInteger(test9,16).toByteArray();
    String test8 = Base58.encode(b2);
    System.out.println(test8);

Als Ergebnis erhalte ich:

    2CffxtJsCdzJEaHXHjSkvb12p12P

aber ich sollte bekommen:

    39YteymR86cG7V3Kijg8Gm2ST1r4nTeM1b

Kann mir bitte jemand helfen?

@ Ryan_McGeary In welcher Bibliothek haben Sie Zugriff auf die Base58-Klasse? Ich würde gerne wissen.

Antworten (1)

Ihre Ausgabe ist angesichts der von Ihnen verwendeten Eingabe korrekt.

Wenn Sie jedoch eine Ausgabeadresse von erwarten 39YteymR86cG7V3Kijg8Gm2ST1r4nTeM1b, sieht es so aus, als wäre Ihre Eingabe falsch. Es fehlen das erste Byte und die letzten 4 Bytes (als Hex codiert):

  Your Input: --56379c7bcd6b41188854e74169f844e8676cf8b8--------
Proper Input: 0556379c7bcd6b41188854e74169f844e8676cf8b86e1b34ba

Probieren Sie dieses Tool aus, um Ihre Erwartungen zu bestätigen :

Beispielformular

Danke! Woher wussten Sie, dass ich 05 und 6e1b34ba hinzufügen muss?
Ich kenne die Adresse vorher nicht. Ich kenne nur den String, der dann base58-codiert werden muss, um mir die Adresse anzuzeigen.
@Ac Von der Seite, auf die ich in meiner Antwort verlinkt habe. Ich habe Ihre erwartete Ausgabe umgekehrt.