是否存在包含密码算法名称、模式、填充方式静态常量的Java类?
加密算法/模式/填充方式的常量替代方案
Java标准库里没有像StandardCharset那样专门封装密码算法名称、模式及填充方式的官方静态常量类——毕竟加密相关的标准名称种类多,且不同JCA加密服务提供商可能有自定义扩展,官方没有做统一的常量封装。
不过可以通过以下方式解决字符串字面量易出错的问题:
自定义常量类
自己封装一套静态常量,把常用的算法、模式、填充方式以及组合后的转换字符串都定义好,示例如下:public final class CipherConstants { // 基础算法名称 public static final String AES = "AES"; public static final String RSA = "RSA"; public static final String DES = "DES"; // 加密模式 public static final String CBC = "CBC"; public static final String GCM = "GCM"; public static final String ECB = "ECB"; // 填充方式 public static final String PKCS5_PADDING = "PKCS5Padding"; public static final String NO_PADDING = "NoPadding"; public static final String OAEP_WITH_SHA1_AND_MGF1_PADDING = "OAEPWithSHA-1AndMGF1Padding"; // 常用组合转换字符串 public static final String AES_CBC_PKCS5PADDING = AES + "/" + CBC + "/" + PKCS5_PADDING; public static final String RSA_OAEP_PADDING = RSA + "/" + OAEP_WITH_SHA1_AND_MGF1_PADDING; }使用时直接调用
Cipher.getInstance(CipherConstants.AES_CBC_PKCS5PADDING),彻底避免拼写错误。第三方安全库参考
像BouncyCastle这类主流安全库中,部分类会包含一些加密相关的常量,但通常覆盖范围有限,不如自己封装的常量类贴合业务需求。
需要注意的是,自定义常量时要严格对照官方列出的标准名称,确保和JCA的加密实现兼容。
内容的提问来源于stack exchange,提问作者Shaun
相关产品推荐
相关产品推荐

