Я очень новый в clojure. У меня нет опыта работы с java &, это функции библиотеки. Я написал функцию в clojure, которые возвращают зашифрованные данные base64, используя java.util.Base64/getUrlEncoder. Мой код выглядит следующим образом:Как получить зашифрованные данные без заполнения?
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-- Я знаю, что это полезно для решения моей проблемы, но я не могу понять, как использовать withoutPadding() Функция в clojure. Я пробовал что-то вроде этого:
user> (let [encoder (Base64/getUrlEncoder))]
(doto (java.util.Base64/Encoder (.withoutPadding (String. (.encode encoder (.getBytes "Hello StackOverflow"))))))
Но это неправильно. может ли кто-нибудь сказать точное решение? Благодарю.
Base64 выходы кратны 4 байта, если вход не требуется, чтобы выход проложенный с «=» символов, то есть, как Base64 работы , Можно удалить символы «=», и декодеры сонов могут принять это, но не большинство. Вы можете восстановить и удалить до декодирования на основе длины Base64, но это не рекомендуется. Просто оставьте прокладку, это обычная практика. – zaph
, чтобы быть ясным, base64 не является методом шифрования, это кодирование – noisesmith