常见的加密算法
- 对称加密算法
DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES - 非对称加密算法
RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用) - Hash算法
MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1
块加密
概念
块加密,英文Block Cyper,又称分组加密,是一种常见的对称加密。它将固定长度的数据块或纯文本数据(未加密)转换成长度相同的密码块(加密文本)数据。该转换的前提是用户提供密钥。解密时,要使用相同的密钥对密码块数据进行逆转换。固定的长度被称做数据块大小,大多数密码块的固定大小都是64位或128位。
常见块加密的处理模式
-
ECB(Electronic codebook,ECB)电子密码本模式
缺点:
明文中重复的排列会反映在密文中
当密文被篡改时,解密后对应的明文分组也会出错,且解密者察觉不到密文被篡改了。也就是说,ECB不能提供对密文的完整性校验。 -
CBC(Cipher-block chaining,CBC)密码分组链接模式
缺点:
具备依赖性,加密过程是串行的,无法被并行化,但是解密可以并行化,因为一个密文会影响到该明文与后一个明文,不会对其他明文产生影响
消息必须是块大小的整数倍,不够需要填充 -
CTR(Counter mode,CTR)计数器模式
-
GCM( Galois/Counter Mode )
GCM是伽罗瓦消息验证码 (GMAC)与Counter模式(CTR)的组合
GCM可以提供对消息的加密和完整性校验,另外,它还可以提供附加消息的完整性校验。
等保加密要求
- 尽量使用CCM或GCM加密模式,符合等保安全要求,GCM性能相对较好
- 涉及三方系统的加解密方式,如果是新开发的接口,也要求对方使用符合等保要求的加密模式对数据进行加密;如果是历史接口,则暂不做强制改造要求。
- 涉及和前端交互数据的加解密,采用后端加密-后端解密,前端与后端交互使用密文的模式。
- 附件附上AESUtils.java,为AES加密方法采用GCM加密模式,新的加解密需求可直接使用。
- RSA算法秘钥要求至少2048位,默认一般为1024位。