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

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

发布时间:2019-08-02 14:08 所属栏目:20 来源:薛勤
导读:该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael为名投稿高级加密标准的甄选流程。(Rijndael的发音近于Rhine doll) Java代码实现: importjava.security.Key; importjav

该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael为名投稿高级加密标准的甄选流程。(Rijndael的发音近于"Rhine doll")

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

Java代码实现:

  1. import java.security.Key; 
  2. import java.security.Security; 
  3. import javax.crypto.Cipher; 
  4. import javax.crypto.KeyGenerator; 
  5. import javax.crypto.SecretKey; 
  6. import javax.crypto.spec.SecretKeySpec; 
  7. import org.apache.commons.codec.binary.Hex; 
  8. import org.bouncycastle.jce.provider.BouncyCastleProvider; 
  9.  
  10. public class AES { 
  11.  
  12.   public static final String src = "aes test"; 
  13.  
  14.   public static void main(String[] args) { 
  15.     jdkAES(); 
  16.     bcAES(); 
  17.   } 
  18.  
  19.   // 用jdk实现: 
  20.   public static void jdkAES() { 
  21.     try { 
  22.       // 生成KEY 
  23.       KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); 
  24.       keyGenerator.init(128); 
  25.       // 产生密钥 
  26.       SecretKey secretKey = keyGenerator.generateKey(); 
  27.       // 获取密钥 
  28.       byte[] keyBytes = secretKey.getEncoded(); 
  29.  
  30.       // KEY转换 
  31.       Key key = new SecretKeySpec(keyBytes, "AES"); 
  32.  
  33.       // 加密 
  34.       Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); 
  35.       cipher.init(Cipher.ENCRYPT_MODE, key); 
  36.       byte[] result = cipher.doFinal(src.getBytes()); 
  37.       System.out.println("jdk aes encrypt:" + Hex.encodeHexString(result)); 
  38.  
  39.       // 解密 
  40.       cipher.init(Cipher.DECRYPT_MODE, key); 
  41.       result = cipher.doFinal(result); 
  42.       System.out.println("jdk aes decrypt:" + new String(result)); 
  43.     } catch (Exception e) { 
  44.       e.printStackTrace(); 
  45.     } 
  46.   } 
  47.  
  48.   // 用bouncy castle实现: 
  49.   public static void bcAES() { 
  50.     try { 
  51.       Security.addProvider(new BouncyCastleProvider()); 
  52.  
  53.       // 生成KEY 
  54.       KeyGenerator keyGenerator = KeyGenerator.getInstance("AES", "BC"); 
  55.       keyGenerator.getProvider(); 
  56.       keyGenerator.init(128); 
  57.       // 产生密钥 
  58.       SecretKey secretKey = keyGenerator.generateKey(); 
  59.       // 获取密钥 
  60.       byte[] keyBytes = secretKey.getEncoded(); 
  61.  
  62.       // KEY转换 
  63.       Key key = new SecretKeySpec(keyBytes, "AES"); 
  64.  
  65.       // 加密 
  66.       Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); 
  67.       cipher.init(Cipher.ENCRYPT_MODE, key); 
  68.       byte[] result = cipher.doFinal(src.getBytes()); 
  69.       System.out.println("bc aes encrypt:" + Hex.encodeHexString(result)); 
  70.  
  71.       // 解密 
  72.       cipher.init(Cipher.DECRYPT_MODE, key); 
  73.       result = cipher.doFinal(result); 
  74.       System.out.println("bc aes decrypt:" + new String(result)); 
  75.     } catch (Exception e) { 
  76.       e.printStackTrace(); 
  77.     } 
  78.   } 

5.对称加密算法-PBE

PBE算法(Password Based Encryption,基于口令加密)是一种基于口令的加密算法,其特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数杂凑多重加密等方法保证数据的安全性。

(编辑:ASP站长网)

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