发布时间:2019-09-03 09:13:50编辑:auto阅读(3907)
import java.util.ArrayList; import java.util.List; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class SecretUtils { //根秘钥 final static byte[] keyBytes = Util.hexStringToByteArray("404142434445464748494A4B4C4D4E4F48494A4B4C4D4E4F"); private static final String Algorithm = "DESede"; //3DES算法 private static byte[] ivs = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 }; private static IvParameterSpec iv = new IvParameterSpec(ivs); /************************************************************ Function: // encryptMode(byte[] src,byte[] key) Description: // 3DES_ECB_EN Input: // src-源数据(byte[]) key-加密秘钥(byte[]) Output: // 加密后的数据 Return: // byte[] *************************************************************/ public static byte[] encryptMode(byte[] src,byte[] key) { try { System.out.println("没到8bytes:"+Util.byteArrayToHexString(src)); SecretKey deskey = new SecretKeySpec(key, Algorithm); //生成密钥21 Cipher c1 = Cipher.getInstance("DESede/ECB/NoPadding"); //实例化负责加密/解密的Cipher工具类22 c1.init(Cipher.ENCRYPT_MODE, deskey); //初始化为加密模式23 return c1.doFinal(src); } catch (java.security.NoSuchAlgorithmException e1) { e1.printStackTrace(); } catch (javax.crypto.NoSuchPaddingException e2) { e2.printStackTrace(); } catch (java.lang.Exception e3) { e3.printStackTrace();} return null; } /************************************************************ Function: // decryptMode(byte[] src,byte[] key) Description: // 3DES_ECB_DE Input: // src-源数据(byte[]) key-解密秘钥(byte[]) Output: // 解密后的数据 Return: // byte[] *************************************************************/ public static byte[] decryptMode(byte[] src ,byte[] key) { try {SecretKey deskey = new SecretKeySpec(key, Algorithm); Cipher c1 = Cipher.getInstance("DESede/ECB/NoPadding"); c1.init(Cipher.DECRYPT_MODE, deskey); //初始化为解密模式44 return c1.doFinal(src); } catch (java.security.NoSuchAlgorithmException e1) { e1.printStackTrace(); } catch (javax.crypto.NoSuchPaddingException e2) { e2.printStackTrace(); } catch (java.lang.Exception e3) { e3.printStackTrace(); } return null; } /************************************************************ Function: // length_process(String src) Description: // 计算MAC时用到,字符串长度处理为8byte的倍数 Input: // src-待变长的源数据(String) Output: // 变长后后的源数据 Return: // String *************************************************************/ private static String length_process(String src) { if(src.length()%16==0){ return src; }else if(src.length()%16==14){ return src+"80"; }else{ src+"80"; while(src.length()%8!=0){ src+="0"; } return src; } } public static String DES_ECB_EN(String data){ String msg = length_process(data); byte[] Util.hexStringToByteArray(msg); byte[] secretStr = SecretUtils.encryptMode(src,keyBytes); //调用加密方法16 System.out.println("【Card Cryptogram DATA明文是】:" + msg); System.out.println("【Card Cryptogram 全部加密文是】:" + Util.byteArrayToHexString(secretStr)); return Util.byteArrayToHexString(secretStr); } public static String DES_ECB_DE(String secretStr){ byte[] myMsg = SecretUtils.decryptMode(Util.hexStringToByteArray(secretStr),keyBytes); //调用解密方法17 System.out.println("【Card Cryptogram DATA解密是】:" + Util.byteArrayToHexString(myMsg)); return Util.byteArrayToHexString(myMsg); } }
上一篇: H3C笔试及答案解析
下一篇: BGP反射器实验(H3C)
47864
46428
37315
34762
29333
25991
24946
19968
19566
18052
5807°
6434°
5949°
5976°
7081°
5927°
5965°
6456°
6421°
7801°