Ich benutze java.util.Base64
(vorstellen in Java8) und seine rfc2045 Decoder mit Base64.getMimeDecoder()
. Ich erwartete, dass die Decodierung eines Base64-codierten Strings, der länger als 76 Zeichen ist, zu einer Ausnahme führen würde, aber es scheint zu funktionieren.Ist es normal, dass java.util.Base64.getMimeDecoder() akzeptiert String länger als 76 Zeichen?
String value = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
// encode with rfc4648 to have a String longer than 76 chars
String encoded = new String(java.util.Base64.getEncoder().encode(value.getBytes()));
System.out.println(encoded.length()); // 84 chars
// decode with rfc2045
String decoded = new String(java.util.Base64.getMimeDecoder().decode(encoded.getBytes()));
System.out.println(decoded.equals(value)); // true
Ist es ein Fehler in der Java-Base64 Implementierung von RFC2045 oder ist es erlaubt, Strings zu haben mehr als 76 Zeichen als Eingabe?
Ich würde denken, dass die Decodierung liberal sein sollte, längere Strings zu akzeptieren, aber der Encoder sollte versuchen, dem Standard so genau wie möglich zu folgen. –