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");
View Code 

1.3、应用场景

  

1.4、示例代码

代码地址:https://github.com/bjlhx15/algorithm-sign.git

 
posted @ 2017-03-14 12:01  bjlhx15  阅读(2588)  评论(0编辑  收藏  举报
Copyright ©2011~2020 JD-李宏旭