package com.zml.des; import org.apache.commons.codec.binary.Hex; import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; /** * Created with IntelliJ IDEA. * Description: * User: zhaomingli * Date: 2017-06-19 * Time: 8:42 */ public class DesTest { private static String src = "des"; public static void main(String[] args) { // jdkDes(); bcDes(); } public static void jdkDes(){ try { //生成key KeyGenerator keyGenerator = KeyGenerator.getInstance("DES"); keyGenerator.init(56); SecretKey secretKey = keyGenerator.generateKey(); byte[] encoded = secretKey.getEncoded(); //KEY转换 DESKeySpec desKeySpec = new DESKeySpec(encoded); SecretKeyFactory factory = SecretKeyFactory.getInstance("DES"); Key secretKey1 = factory.generateSecret(desKeySpec); System.out.println("key:"+secretKey1); //加密 Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE,secretKey1); byte[] bytes = cipher.doFinal(src.getBytes()); System.out.println("JDK转"+ Hex.encodeHexString(bytes)); cipher.init(Cipher.DECRYPT_MODE,secretKey1); bytes= cipher.doFinal(bytes); System.out.println("解密:"+new String(bytes)); } catch (Exception e) { e.printStackTrace(); } } public static void bcDes(){ try { Security.addProvider(new BouncyCastleProvider()); //生成key KeyGenerator keyGenerator = KeyGenerator.getInstance("DES","BC"); keyGenerator.init(56); SecretKey secretKey = keyGenerator.generateKey(); byte[] encoded = secretKey.getEncoded(); //KEY转换 DESKeySpec desKeySpec = new DESKeySpec(encoded); SecretKeyFactory factory = SecretKeyFactory.getInstance("DES"); Key secretKey1 = factory.generateSecret(desKeySpec); System.out.println("key:"+secretKey1); //加密 Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE,secretKey1); byte[] bytes = cipher.doFinal(src.getBytes()); System.out.println("BC转"+ Hex.encodeHexString(bytes)); cipher.init(Cipher.DECRYPT_MODE,secretKey1); bytes= cipher.doFinal(bytes); System.out.println("解密:"+new String(bytes)); } catch (Exception e) { e.printStackTrace(); } } }
转载于:https://my.oschina.net/u/3229047/blog/983146