| 密码学中,三重数据加密算法(英语: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 (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |