java加密算法-DES
阿新 • • 發佈:2017-10-27
println class exceptio efault security 生成密鑰 ret ons ini
public class DESUtil { private static String strdefaultkey = "13456789abcd";//默認的key private Cipher encryptCipher = null;//加密 private Cipher decryptCipher = null;//解密 public static String byteArr2HexStr(byte[] arrb) { int len = arrb.length; StringBuffer sb = new StringBuffer(len * 2); for (int i = 0; i < len; i++) { int inttmp = arrb[i]; while (inttmp < 0) { inttmp = inttmp + 256; } if (inttmp < 16) { sb.append("0"); } sb.append(Integer.toString(inttmp, 16)); }return sb.toString(); } public static byte[] hexstr2byteatrr(String strin) { byte[] arrb = strin.getBytes(); int len = arrb.length; byte[] arro = new byte[len / 2]; for (int i = 0; i < len; i = i + 2) { String strt = new String(arrb, i, 2); arro[i/ 2] = (byte) Integer.parseInt(strt, 16); } return arro; } // public DesUtils() throws Exception { this(strDefaultKey); } public DESUtil() throws Exception { this(strdefaultkey); } public DESUtil(String strdefaultkey2) throws Exception { Security.addProvider(new SunJCE()); Key key = getKey(strdefaultkey2.getBytes()); encryptCipher = Cipher.getInstance("DES"); encryptCipher.init(Cipher.ENCRYPT_MODE, key); decryptCipher = Cipher.getInstance("DES"); decryptCipher.init(Cipher.DECRYPT_MODE, key); } public byte[] encrypt(byte[] arrb) throws Exception { return encryptCipher.doFinal(arrb); } public String encrypt(String str) throws Exception { return byteArr2HexStr(encrypt(str.getBytes())); } public byte[] decrypt(byte[] arrB) throws Exception { return decryptCipher.doFinal(arrB); } public String decrypt(String strIn) throws Exception { return new String(decrypt(hexstr2byteatrr(strIn))); } private Key getKey(byte[] arrBTmp){ byte[]arrB=new byte[8]; for(int i=0;i<arrBTmp.length&&i<arrB.length;i++){ arrB[i]=arrBTmp[i]; } // 生成密鑰 Key key=new javax.crypto.spec.SecretKeySpec(arrB,"DES"); return key; } public static void main(String[] args) throws Exception { String test="ksjdfksjdflk;342315.,,52256266322555124123225555"; DESUtil des = new DESUtil("kj;skldjfklsdj,.-=sdfjj;f‘wons2862485");//自定義key值 String b = des.encrypt(test);//加密 System.out.println("加密後:"+b); String a= des.encrypt(test); //DateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm SSS"); System.out.println("解密後"+des.decrypt(a));//解密 } }
java加密算法-DES