1
私は非常にclojureです。私はJavaの経験を持っていません&それはライブラリ関数です。私はjava.util.Base64/getUrlEncoderを使ってbase64で暗号化されたデータを返す関数をclojureに書きました。以下のように私のコードを見て:パディングなしで暗号化されたデータを取得する方法は?
user> (import java.util.Base64)
java.util.Base64
user> (let [encoder (Base64/getUrlEncoder)]
(String. (.encode encoder (.getBytes "Hello StackOverflow"))))
"SGVsbG8gU3RhY2tPdmVyZmxvdw=="
出力も(最後ので2等号)パディングが含まれています。私は私の出力から詰め物を削除するしたい。 https://docs.oracle.com/javase/8/docs/api/java/util/Base64.Encoder.html#withoutPadding--これは私の問題を解決するのに便利だと分かっていますが、私はwithoutPadding()関数をclojureで使用する方法を理解できません。私はこのようなものを試しました:
user> (let [encoder (Base64/getUrlEncoder))]
(doto (java.util.Base64/Encoder (.withoutPadding (String. (.encode encoder (.getBytes "Hello StackOverflow"))))))
これは間違っています。誰も正確な解決策を教えてくれますか?ありがとう。
のBase64出力倍数、それがどのようにBase64で作品です。 "="文字を削除することは可能であり、ソーン・デコーダはそれを受け入れるかもしれないが、大部分ではない。 Base64の長さに基づいてデコードする前に復元して削除することもできますが、これはお勧めしません。ちょうどパディングを残して、それは一般的な習慣です。 – zaph
をクリアすると、base64は暗号化方式ではなく、エンコード – noisesmith