woollay / bq-encryptor

1.支持国际上通用的加密算法:RSA(1024/2048)/AES(128/192/256)/3DES(DESede)/PGP/SHA-1/SHA-256/SHA-512/SHA-3/HmacSHA256/Hmac-SHA512/MD5;2.也支持国密算法:SM2/SM3/SM4/HmacSM3/HSM;3.抽象并融合了上述2套加密算法,希望对你有用
Apache License 2.0
5 stars 1 forks source link
3des aes cryptor encrypt gm hmac hsm md5 pgp rsa sha signature sm2 sm3 sm4 verifying-signatures

bq-encryptor加解密组件说明

1. 为什么要写bq-encryptor加解密组件

2. 使用bq-encryptor加解密组件有什么好处

3. bq-encryptor加解密组件的使用说明

本节将从国际标准的加密分类、加解密组件的分层、加解密组件的使用、加解密组件的实现依次予以介绍。

3.1 加解密分类

名称 全称 类型 加密长度 加密/工作模式/填充模式 签名算法 使用场景 典型案例
RSA 3人名缩写 非对称加密 ~~
1024~~
2048
3072
4096
- RSA/ECB/PKCS1Padding
RSA/ECB/OAEPWithSHA-1AndMGF1Padding
RSA/ECB/OAEPWithSHA-256AndMGF1Padding
SHA512WITHRSA
SHA256WITHRSA
...
加密效率较低,一般不用作加密
用做签名
HTTPS证书
JwtToken签名
SM2 SM2椭圆曲线公钥密码算法 非对称加密 256 - SM3WithSM2 安全性优于RSA 2048,可用于替代RSA
用做签名
国产HTTPS证书
国产加密机
AES Advanced Encryption Standard 对称加密 128
192
256
AES/CBC/NoPadding
AES/CBC/PKCS5Padding
AES/ECB/PKCS5Padding
AES/CTR/NoPadding
- 加密效率高,当下只有256位是安全的
通常使用CBC/CTR模式加密
各种数据加密
SM4 SM4分组密码算法 对称加密 128
SM4/CBC/PKCS5Padding
SM4/CTR/NoPadding
- 安全性优于AES 256,可用于替换AES
通常使用CBC/CTR模式加密
各种数据加密
3DES Triple Data Encryption Algorithm 对称加密 192
DESede/CBC/NoPadding
DESede/CBC/PKCS5Padding
DESede/ECB/PKCS5Padding
- 安全性较差,建议使用AES/SM4来替代 各种数据加密
SHA-1 Secure Hash Algorithm 1 摘要算法 160
- - - 用于内容防篡改 各种报文/下载文件的完整性校验
SHA-256 Secure Hash Algorithm 2 摘要算法 256
- - - 用于内容防篡改 各种报文/下载文件的完整性校验
SHA-512 Secure Hash Algorithm 2 摘要算法 512
- - - 用于内容防篡改 各种报文/下载文件的完整性校验
SHA3 Secure Hash Algorithm 3 摘要算法 512
- - - 用于内容防篡改 各种报文/下载文件的完整性校验
SM3 SM3密码杂凑算法 摘要算法 256
- - 在SHA-256基础上的改进算法,用于替代SHA算法 各种报文/下载文件的完整性校验
MD5 Secure Hash Algorithm 1 摘要算法 128< - - 用于内容防篡改 安全性较差,建议使用SHA-512/SM3来替替代
HmacSHA256 Hash-based Message Authentication Code 基于摘要的带认证码的加密算法 256
- - 用于内容防篡改
用于消息认证
安全性一般,曾用于早期的JwtToken认证
HmacSHA512 Hash-based Message Authentication Code 基于摘要的带认证码的加密算法 512
- - 用于内容防篡改
用于消息认证
Hmac-SHA256的升级版
HmacSM3 Hash-based Message Authentication Code 基于摘要的带认证码的加密算法 256
- - 用于内容防篡改 Hmac的国产实现,用于替代HmacSHA256

加密长度: 在加密算法中通常是指分段秘钥的长度,在摘要算法中通常是指内容块的长度;
补充说明: 由于加密长度、填充模式、签名算法的不同,实际上会有非常多的组合使用方式,此处并没有一一列举,但组件基本上都已支持;

3.2 加解密组件的分层

3.2.1 分层整体设计

     加密算法                      加密器                        加密机
 +-------------+             +-------------+             +-------------+
 | encryption  |             |  encryptor  |             |     hsm     |
 |             |  -------->  |             |  -------->  |             |
 +-------------+             +-------------+     |       +-------------+
                                                 |
                                                 |           加密安全器
                                                 |       +-------------+
                                                 |       |   security  |
                                                 +---->  |             |
                                                         +-------------+

加密算法(encryption):提供了基本的加解密算法能力,包括生成秘钥,传入报文和秘钥做加解密,还提供了部分证书解析和转换的能力。包名:com.biuqu.encryption
加密器(encryptor):加密算法的封装类,简化了加解密算法的使用,初始化加密器时,就需要初始化秘钥,仅需要传入报文做加解密,包名:com.biuqu.encryptor
加密机(hsm):加密器的子类,封装了只需要在系统内部使用秘钥的、安全等级最高的加密器的使用,仅需要传入报文做特定的加解密,包名:com.biuqu.hsm
加密安全器(security):加密器的子类,封装了需要与外部交换秘钥、内部安全等级不高的特殊的加密器的使用,仅需要传入报文做加解密,包名:com.biuqu.security

3.2.2 分层详细设计

bq-encryptor按照加解密算法类型划分
类型 抽象类 算法名称 算法实现类 是否安全 补充说明
对称加密算法 BaseSingleEncryption AES AesEncryption 只有256位是安全的
SM4 Sm4Encryption AES256的国内替代算法
3DES Des3Encryption 不安全算法,不推荐使用
BaseSecureSingleEncryption AES AesSecureEncryption 在AES加解密时增加了盐值
SM4 Sm4SecureEncryption 在SM4加解密时增加了盐值
非对称加密算法 BaseSingleSignature RSA RsaEncryption 只有2048位是安全的
SM2 Sm2Encryption RSA2048的国内替代算法
复合加密算法 BaseMultiEncryption PGP PgpEncryption 一般单独使用签名场景,加解密时效率也高于单独使用相同的非对称加密算法
在国际上有使用该协议做敏感报文的加解密
复合签名算法 BaseMultiSignature US UsEncryption 自定义算法,综合使用了RSA2048/SHA512/AES256算法
GM GmEncryption 自定义国密算法,综合使用了SM2/SM3/SM4算法
UsHsm UsHsmEncryption 自定义算法,应用于加密机场景,综合使用了RSA2048/SHA512
GmHsm GmHsmEncryption 自定义国密算法,应用于加密机场景,综合使用了SM2/SM3
摘要算法 BaseHash SHA-512 ShaHash SHA摘要算法的通用实现,可支持:SHA-1/SHA-224/SHA-256/SHA-384/SHA-512/SHA3-224/SHA3-256/SHA3-384/SHA3-512/MD5等
SM3 Sm3Hash SHA256的国内替代算法
HMAC算法 KeyHash HMAC ShaHmacKeyHash HMAC的通用实现,可支持:HmacSHA1/HmacSHA224/HmacSHA256/HmacSHA384/HmacSHA512/HmacMD5等
Sm3Hmac Sm3HmacKeyHash HMAC的国内替代算法
  1. 盐值:即对应加解密算法中的偏移量;
  2. 复合签名算法GM/US加密算法为业务场景中的提炼总结,GmHsm/UsHsm为加密机的实际使用经验总结,总之就是要兼顾加解密效率和安全;
  3. 上述算法实现均基于BouncyCastle做了统一的封装;
  4. 国际加密算法基本上都有1个与之对应的国密算法(PGP除外);

3.3 bq-encryptor加解密组件的使用

3.4 bq-encryptor加解密组件的实现