java-信息安全(三)-PBE加密算法
概述
1.1、基本概念:
PBE算法(Password Based Encryption,基于口令加密),通过加Salt来增强安全性。对已有算法【AES、DES等】的包装,
其特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数杂凑多重加密等方法保证数据的安全性。
PBE算法在加密过程中并不是直接使用口令来加密,而是加密的密钥由口令生成,这个功能由PBE算法中的KDF函数完成。KDF函数的实现过程为:将用户输入的口令首先通过“盐”(salt)的扰乱产生准密钥,再将准密钥经过散列函数多次迭代后生成最终加密密钥,密钥生成后,PBE算法再选用对称加密算法对数据进行加密,可以选择DES、3DES、RC5等对称加密算法.
PBE算法结合了消息摘要算法和对称加密算法的优点
1.2、算法支持
jdk支持的
list.add("PBEWITHHMACSHA1ANDAES_128"); list.add("PBEWITHHMACSHA1ANDAES_256"); list.add("PBEWITHHMACSHA224ANDAES_128"); list.add("PBEWITHHMACSHA224ANDAES_256"); list.add("PBEWITHHMACSHA256ANDAES_128"); list.add("PBEWITHHMACSHA256ANDAES_256"); list.add("PBEWITHHMACSHA384ANDAES_128"); list.add("PBEWITHHMACSHA384ANDAES_256"); list.add("PBEWITHHMACSHA512ANDAES_128"); list.add("PBEWITHHMACSHA512ANDAES_256"); list.add("PBEWITHMD5ANDDES"); list.add("PBEWITHMD5ANDTRIPLEDES"); list.add("PBEWITHSHA1ANDDESEDE"); list.add("PBEWITHSHA1ANDRC2_128"); list.add("PBEWITHSHA1ANDRC2_40"); list.add("PBEWITHSHA1ANDRC4_128"); list.add("PBEWITHSHA1ANDRC4_40");
注意 AES 有向量改初始值
bc支持的
list.add("PBEWithMD2AndDES"); list.add("PBEWithMD5AndRC2"); list.add("PBEWithSHA1AndDES"); list.add("PBEWithSHA1AndRC2"); list.add("PBEWithSHAAndIDEA-CBC"); list.add("PBEWITHSHAAND3-KEYTRIPLEDES-CBC"); list.add("PBEWithSHAAnd3KeyTripleDES"); list.add("PBEWITHSHAAND2-KEYTRIPLEDES-CBC"); list.add("PBEWithSHAAnd128BitRC2-CBC"); list.add("PBEWithSHAAnd40BitRC2-CBC"); list.add("PBEWithSHAAnd128BitRC4"); list.add("PBEWithSHAAnd40BitRC4"); list.add("PBEWithSHAAndTwofish-CBC"); list.add("PBEWITHSHA1AND128BITAES-CBC-BC"); list.add("PBEWITHSHA1AND192BITAES-CBC-BC"); list.add("PBEWITHSHA1AND256BITAES-CBC-BC"); list.add("PBEWITHSHA-1AND128BITAES-CBC-BC"); list.add("PBEWITHSHA-1AND192BITAES-CBC-BC"); list.add("PBEWITHSHA-1AND256BITAES-CBC-BC"); list.add("PBEWITHSHA-256AND128BITAES-CBC-BC"); list.add("PBEWITHSHA-256AND192BITAES-CBC-BC"); list.add("PBEWITHSHA-256AND256BITAES-CBC-BC"); list.add("PBEWITHSHA-256AND128BITAES-BC"); list.add("PBEWITHSHA-256AND192BITAES-BC"); list.add("PBEWITHSHA-256AND256BITAES-BC");
1.3、应用场景
1.4、示例代码
代码地址:https://github.com/bjlhx15/algorithm-sign.git