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