编码与加密
编码和加密已经引入部分二方库和三方库,二方库中的加密方法是对三方库的封装。
编解码
我们优先使用 JDK 自带的库,也可以使用 Apache Commons Codec
库开扩展多种编码和解码算法的实现,主要用于处理字符串和其他数据类型的编码转换。
Base64 编码/解码:
org.apache.commons.codec.binary.Base64
用于将二进制数据(如图片、音频或任何字节流)编码为ASCII字符组成的字符串,使得这些数据可以在那些原本不支持二进制数据的地方(如电子邮件正文、HTTP头信息等)安全传输。 反向操作则是将Base64格式的字符串解码回原始的二进制数据。
当然,JDK 自带的 java.util.Base64
也很好用,后续我们会进行二次封装使其使用起来更加方便。
URL 编码/解码:
通常使用 java.net.URLEncoder
和 java.net.URLDecoder
来编码和解码URL。 对于在统一资源定位符(URL)中使用非字母数字字符,Codec提供了对它们进行百分比编码和解码的支持。 URL编码确保所有字符都可以安全地在网络上传输,不会引起解析错误或歧义。
散列函数:
org.apache.commons.codec.digest.DigestUtils
提供MD5、SHA-1、SHA-256等散列函数的实现,可以生成消息摘要,常用于数据完整性校验或简单密码哈希。
org.apache.commons.codec.digest.HmacUtils
类中包含了多种预定义的HMAC算法实现,如HMAC-MD5、HMAC-SHA1、HMAC-SHA256等,并提供了一些简单易用的方法来生成HMAC值。
更多编解码器:
Apache Commons Codec还包括其他一些编解码工具,例如音译编码(Phonetic Encodings)、以及特定场景下的自定义编码方案。 总之,Apache Commons Codec是一个实用工具包,旨在简化各种常见编码任务,并提供了一致且可靠的API来处理这些任务,是Java开发者在日常编程中常用的库之一。
加解密
我们在二方库 commons-tools 中实现了部分加密算法,位于 com.simperfect.commons.util.encryption
包下。