如何为 url 安全编码和缩短散列?

How to encode and shorten hash for url safety?

我使用 SHA-512 对令牌进行哈希处理,得到 128 个字符的字符串。我如何对其进行编码以使其更短但仍然 URL 安全(无需像 '+' 或 '&' 那样转义)?

Hex 和 Base32 都不理想,Base64 不安全。我不想破解自定义 Base62 编解码器,因为那只会成为维护负担。

Google你了解了吗:

com.google.common.io.BaseEncoding#base64Url

这是一种高效的 Base64 编解码器,仅使用 url 安全字符。它将为 SHA512 哈希生成一个长度为 88 个字符的字符串。

Java添加了8种Base64编码器,风格各异。参见 java.util.Base64

例如:

Base64.getUrlEncoder().encode(...);