设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 运营中心 > 建站资源 > 策划 > 正文

DES、3DES、AES、PBE对称加密算法实现及应用(5)

发布时间:2019-08-02 14:08 所属栏目:20 来源:薛勤
导读:PBE算法在加密过程中并不是直接使用口令来加密,而是加密的密钥由口令生成,这个功能由PBE算法中的KDF函数完成。KDF函数的实现过程为:将用户输入的口令首先通过盐(salt)的扰乱产生准密钥,再将准密钥经过散列函数

PBE算法在加密过程中并不是直接使用口令来加密,而是加密的密钥由口令生成,这个功能由PBE算法中的KDF函数完成。KDF函数的实现过程为:将用户输入的口令首先通过“盐”(salt)的扰乱产生准密钥,再将准密钥经过散列函数多次迭代后生成最终加密密钥,密钥生成后,PBE算法再选用对称加密算法对数据进行加密,可以选择DES、3DES、RC5等对称加密算法。

具体实现如下:

DES、3DES、AES、PBE对称加密算法实现及应用

DES、3DES、AES、PBE对称加密算法实现及应用

Java代码实现:

  1. import java.security.Key; 
  2. import java.security.SecureRandom; 
  3. import javax.crypto.Cipher; 
  4. import javax.crypto.SecretKeyFactory; 
  5. import javax.crypto.spec.PBEKeySpec; 
  6. import javax.crypto.spec.PBEParameterSpec; 
  7. import org.apache.commons.codec.binary.Hex; 
  8.  
  9. public class PBE { 
  10.  
  11.   public static final String src = "pbe test"; 
  12.  
  13.   public static void main(String[] args) { 
  14.     jdkPBE(); 
  15.   } 
  16.  
  17.   // 用jdk实现: 
  18.   public static void jdkPBE() { 
  19.     try { 
  20.       // 初始化盐 
  21.       SecureRandom random = new SecureRandom(); 
  22.       byte[] salt = random.generateSeed(8); 
  23.  
  24.       // 口令与密钥 
  25.       String password = "timliu"; 
  26.       PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray()); 
  27.       SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEWITHMD5andDES"); 
  28.       Key key = factory.generateSecret(pbeKeySpec); 
  29.  
  30.       // 加密 
  31.       PBEParameterSpec pbeParameterSpac = new PBEParameterSpec(salt, 100); 
  32.       Cipher cipher = Cipher.getInstance("PBEWITHMD5andDES"); 
  33.       cipher.init(Cipher.ENCRYPT_MODE, key, pbeParameterSpac); 
  34.       byte[] result = cipher.doFinal(src.getBytes()); 
  35.       System.out.println("jdk pbe encrypt:" + Hex.encodeHexString(result)); 
  36.  
  37.       // 解密 
  38.       cipher.init(Cipher.DECRYPT_MODE, key, pbeParameterSpac); 
  39.       result = cipher.doFinal(result); 
  40.       System.out.println("jdk pbe decrypt:" + new String(result)); 
  41.     } catch (Exception e) { 
  42.       e.printStackTrace(); 
  43.     } 
  44.   } 

应用举例:

DES、3DES、AES、PBE对称加密算法实现及应用

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读