1
我在clojure很新。我沒有任何與java &有關的庫函數的經驗。我在clojure中編寫了一個函數,它使用java.util.Base64/getUrlEncoder返回base64加密數據。我的代碼如下所示:如何獲得不帶填充的加密數據?
user> (import java.util.Base64)
java.util.Base64
user> (let [encoder (Base64/getUrlEncoder)]
(String. (.encode encoder (.getBytes "Hello StackOverflow"))))
"SGVsbG8gU3RhY2tPdmVyZmxvdw=="
輸出包含填充以及(在最後兩個相等的跡象)。我想從我的輸出中刪除填充。 https://docs.oracle.com/javase/8/docs/api/java/util/Base64.Encoder.html#withoutPadding--我知道這是有用的解決我的問題,但我無法弄清楚如何使用沒有Padding()函數clojure。我試過這樣的事情:
user> (let [encoder (Base64/getUrlEncoder))]
(doto (java.util.Base64/Encoder (.withoutPadding (String. (.encode encoder (.getBytes "Hello StackOverflow"))))))
但這是錯誤的。誰能告訴確切的解決方案?謝謝。
的4個字節的Base64輸出的倍數,如果輸入不需要輸出則以用「=」字,那是何等的Base64作品。可以刪除「=」字符,而解碼器可能會接受但不是最多。根據Base64長度,您可以在解碼之前進行恢復和刪除,但不建議這樣做。只留下填充物,這是常見的做法。 – zaph
要清楚,base64不是一種加密方法,它是一種編碼 – noisesmith