Ich bin sehr neu in Clojure. Ich habe keine Erfahrung mit Java & es ist Bibliotheksfunktionen. Ich habe eine Funktion in clojure geschrieben, die base64-verschlüsselte Daten mit java.util.Base64/getUrlEncoder zurückgibt. Mein Code wie folgt aussehen:Wie bekomme ich verschlüsselte Daten ohne Padding?
user> (import java.util.Base64)
java.util.Base64
user> (let [encoder (Base64/getUrlEncoder)]
(String. (.encode encoder (.getBytes "Hello StackOverflow"))))
"SGVsbG8gU3RhY2tPdmVyZmxvdw=="
Der Ausgang Polsterung sowie (zwei Gleichheitszeichen zuletzt) enthalten. Ich möchte entfernen Polsterung von meiner Ausgabe. https://docs.oracle.com/javase/8/docs/api/java/util/Base64.Encoder.html#withoutPadding-- Ich weiß, das ist nützlich, um mein Problem zu lösen, aber ich bin nicht in der Lage, herauszufinden, wie ohnePadding() Funktion in clojure zu verwenden. Ich habe so etwas versucht:
user> (let [encoder (Base64/getUrlEncoder))]
(doto (java.util.Base64/Encoder (.withoutPadding (String. (.encode encoder (.getBytes "Hello StackOverflow"))))))
Aber das ist falsch. kann jemand genaue lösung sagen? Vielen Dank.
Base64 Ausgaben ein Vielfaches von 4 Bytes, wenn der Eingang nicht erfordert, dass der Ausgang mit „=“ Zeichen aufgefüllt wird, ist, dass, wie Base64 Werke . Es ist möglich, die "=" - Zeichen zu entfernen und sone-Decoder akzeptieren das, aber nicht die meisten. Sie können vor dem Decodieren basierend auf der Base64-Länge wiederherstellen und löschen, dies wird jedoch nicht empfohlen. Lassen Sie einfach die Polsterung, das ist die übliche Praxis. – zaph
um klar zu sein, Base64 ist keine Verschlüsselungsmethode, es ist eine Codierung – noisesmith