Code: Select all
String password = "123456";
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.reset();
BASE64Decoder decoder = new BASE64Decoder();
byte[] bytes = decoder.decodeBuffer(password);
digest.update(bytes);
byte[] input = /* some digest operations here */
BASE64Encoder encoder = new BASE64Encoder();
String result = encoder.encode(input);
< /code>
Da ich gebeten wurde, diesen Code genau so zu kopieren, übertrage ich ihn an das Java 11 -Projekt ohne Refactoring unter Verwendung der Java.util.base64 -Klassen wie folgt: < /p>
String password = "123456";
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.reset();
byte[] bytes = Base64.getDecoder().decode(password);
digest.update(bytes);
byte[] input = /* some digest operations here */
String result = Base64.getEncoder().encodeToString(input);
Bei altem Projekt, das von decoder.decodeBuffer (Passwort) erzeugte Byte -Array;
Der Betrieb ist wie folgt: [-41, 109, -8, -25, -83, -8]. Base64.GetDeCoder (). Decode (Passwort); Der Vorgang ist wie folgt: [-41, 109, -8, -25]. Während die alte Bibliothek ein 6-stelliges Array erstellt, erstellt die neue Bibliothek ein 4-stelliges Array. Obwohl diese vier Ziffern die gleichen sind wie die anderen, fehlen 2 Bytes. Dies führt dazu, dass die Basis64 -Zeichenfolge in den beiden Projekten unterschiedlich sein. Wie kann ich das lösen? Wie kann ich sicherstellen, dass der Dekodierungsbetrieb der neuen Base64 -Klasse das gleiche Ergebnis wie die Operation in der alten Klasse liefert? Sei gleich, kann es aber nicht erfolgen.