You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在包含密码算法名称、模式、填充方式静态常量的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 10:15:28