如何在不填充的情况下获取加密数据?

How to get encrypted data without padding?

我是 clojure 的新手。我对 java 和它的库函数没有任何经验。我在 clojure 中写了一个函数,它使用 java.util.Base64/getUrlEncoder return base64 加密数据。我的代码看起来像:

user> (import java.util.Base64)
java.util.Base64
user> (let [encoder (Base64/getUrlEncoder)]
        (String. (.encode encoder (.getBytes "Hello Whosebug"))))
"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 Whosebug"))))))

但这是错误的。谁能告诉确切的解决方案?谢谢

您必须在编码器本身上调用 withoutPadding

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