我的工作项目是使用Jackson JSON序列化程序将一堆 Java 对象转换为字符串,以便将它们发送到 REST 服务。
其中一些对象包含敏感数据,因此我编写了自定义序列化程序来将这些对象序列化为 JSON 字符串,然后 gzip 压缩它们,然后使用AES
;加密它们。
这会将字符串转换为字节数组,因此我在编解码器中使用Base64编码Apache commons
器将字节数组转换为字符串。REST 接口后面的自定义反序列化器反转了这个过程:
base64 decode -> decrypt -> decompress -> deserialize using default Jackson deserializer.
Base64
编码会增加输出的大小(序列化中的 gzip 步骤旨在帮助改善这种增加),所以我检查了谷歌,看看是否有更有效的替代方案,这导致我找到了之前的 stackoverflow 线程,该线程将Ascii85编码为更有效的替代方案 -
Base64
输出大小增加 33%,输出大小Ascii85
增加 25%。
我发现了一些 Java Ascii85 实现,例如 Apache pdfbox,但我对使用编码有点谨慎 - 似乎几乎没有人在使用或实现它,这可能只是意味着 Base64 有更多的惯性,或者这可能意味着Ascii85 有一些奇怪的问题。
有人对这个主题了解更多吗?Ascii85 是否有任何问题意味着我应该改用 Base64?