我使用SHA-512来散列令牌,这会产生128个字符的字符串。如何对其进行编码以使其更短但仍然保证网址安全(不需要像' +'或''')?
Hex和Base32都不是最理想的,而Base64是不安全的。我不想破解自定义Base62编解码器,因为这只会成为维护负担。
答案 0 :(得分:1)
谷歌让你满意:
com.google.common.io.BaseEncoding#base64Url
这是一个高效的Base64编解码器,只使用url-safe字符。它将生成一个长度为88个字符的String,用于SHA512哈希。
答案 1 :(得分:1)
Java 8添加了不同风格的Base64编码器。请参阅java.util.Base64
例如:
Base64.getUrlEncoder().encode(...);