| 
                         密码学中,三重数据加密算法(英语:Triple Data Encryption Algorithm,缩写为TDEA,Triple  DEA),或称3DES(Triple  DES),是一种对称密钥加密块密码,相当于是对每个数据块应用三次数据加密标准(DES)算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。 
Java代码实现: 
- import java.security.Key; 
 - import java.security.SecureRandom; 
 - import java.security.Security; 
 - import javax.crypto.Cipher; 
 - import javax.crypto.KeyGenerator; 
 - import javax.crypto.SecretKey; 
 - import javax.crypto.SecretKeyFactory; 
 - import javax.crypto.spec.DESedeKeySpec; 
 - import org.apache.commons.codec.binary.Hex; 
 - import org.bouncycastle.jce.provider.BouncyCastleProvider; 
 -  
 - public class DES3 { 
 -  
 -   public static final String src = "3des test"; 
 -  
 -   public static void main(String[] args) { 
 -     jdk3DES(); 
 -     bc3DES(); 
 -   } 
 -  
 -   // 用jdk实现: 
 -   public static void jdk3DES() { 
 -     try { 
 -       // 生成KEY 
 -       KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede"); 
 -       // 必须长度是:112或168 
 - //            keyGenerator.init(168); 
 -       keyGenerator.init(new SecureRandom()); 
 -       // 产生密钥 
 -       SecretKey secretKey = keyGenerator.generateKey(); 
 -       // 获取密钥 
 -       byte[] bytesKey = secretKey.getEncoded(); 
 -  
 -       // KEY转换 
 -       DESedeKeySpec desKeySpec = new DESedeKeySpec(bytesKey); 
 -       SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede"); 
 -       Key convertSecretKey = factory.generateSecret(desKeySpec); 
 -  
 -       // 加密 
 -       Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding"); 
 -       cipher.init(Cipher.ENCRYPT_MODE, convertSecretKey); 
 -       byte[] result = cipher.doFinal(src.getBytes()); 
 -       System.out.println("jdk 3des encrypt:" + Hex.encodeHexString(result)); 
 -  
 -       // 解密 
 -       cipher.init(Cipher.DECRYPT_MODE, convertSecretKey); 
 -       result = cipher.doFinal(result); 
 -       System.out.println("jdk 3des decrypt:" + new String(result)); 
 -  
 -     } catch (Exception e) { 
 -       e.printStackTrace(); 
 -     } 
 -   } 
 -  
 -   // 用bouncy castle实现: 
 -   public static void bc3DES() { 
 -     try { 
 -       Security.addProvider(new BouncyCastleProvider()); 
 -  
 -       // 生成KEY 
 -       KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede", "BC"); 
 -       keyGenerator.getProvider(); 
 -       keyGenerator.init(168); 
 -       // 产生密钥 
 -       SecretKey secretKey = keyGenerator.generateKey(); 
 -       // 获取密钥 
 -       byte[] bytesKey = secretKey.getEncoded(); 
 -  
 -       // KEY转换 
 -       DESedeKeySpec desKeySpec = new DESedeKeySpec(bytesKey); 
 -       SecretKeyFactory factory = SecretKeyFactory.getInstance("DESede"); 
 -       Key convertSecretKey = factory.generateSecret(desKeySpec); 
 -  
 -       // 加密 
 -       Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding"); 
 -       cipher.init(Cipher.ENCRYPT_MODE, convertSecretKey); 
 -       byte[] result = cipher.doFinal(src.getBytes()); 
 -       System.out.println("bc 3des encrypt:" + Hex.encodeHexString(result)); 
 -  
 -       // 解密 
 -       cipher.init(Cipher.DECRYPT_MODE, convertSecretKey); 
 -       result = cipher.doFinal(result); 
 -       System.out.println("bc 3des decrypt:" + new String(result)); 
 -  
 -     } catch (Exception e) { 
 -       e.printStackTrace(); 
 -     } 
 -   } 
 - } 
 
  
4.对称加密算法-AES                         (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |