簡體   English   中英

如何獲取加密數據而無需填充?

[英]How to get encrypted data without padding?

我對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-我知道這對於解決我的問題很有用,但我不知道如何解決在clojure中使用withoutPadding()函數。 我嘗試過這樣的事情:

user> (let [encoder (Base64/getUrlEncoder))]
        (doto (java.util.Base64/Encoder (.withoutPadding (String. (.encode encoder (.getBytes "Hello StackOverflow"))))))

但這是錯誤的。 誰能告訴確切的解決方案? 謝謝。

您必須在編碼器本身上調用withoutPadding

user> (import java.util.Base64)
java.util.Base64
user> (let [encoder (Base64/getUrlEncoder)]
        (String. (.encode encoder (.getBytes "Hello StackOverflow"))))
"SGVsbG8gU3RhY2tPdmVyZmxvdw=="
user> (let [encoder (.withoutPadding (Base64/getUrlEncoder))]
        (String. (.encode encoder (.getBytes "Hello StackOverflow"))))
"SGVsbG8gU3RhY2tPdmVyZmxvdw"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM