package com.m.billingplug.util; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; /** * AES加密类 * @author mhx * */ public class AesUtil { /** * 日志输出标签 */ private static final String TAG = "AesUtil"; /** * AES加密方式 */ private static final String AES = "AES"; /** * key */ public static final String KEY = "mhx"; /** * 加密 * @param encryptStr * @return */ private byte[] encrypt(byte[] src, String key) throws Exception { Cipher cipher = Cipher.getInstance(AES); SecretKeySpec securekey = new SecretKeySpec(key.getBytes(), AES); cipher.init(Cipher.ENCRYPT_MODE, securekey); return cipher.doFinal(src); } /** * 解密 * @param decryptStr * @return * @throws Exception */ private byte[] decrypt(byte[] src, String key) throws Exception { Cipher cipher = Cipher.getInstance(AES); SecretKeySpec securekey = new SecretKeySpec(key.getBytes(), AES); cipher.init(Cipher.DECRYPT_MODE, securekey); return cipher.doFinal(src); } /** * * @param b * @return */ private String byte2hex(byte[] b) { String hs = ""; String stmp = ""; for (int n = 0; n < b.length; n++) { stmp = (java.lang.Integer.toHexString(b[n] & 0XFF)); if (stmp.length() == 1) hs = hs + "0" + stmp; else hs = hs + stmp; } return hs.toUpperCase(); } private byte[] hex2byte(byte[] b) { if ((b.length % 2) != 0) throw new IllegalArgumentException("非法数据异常!"); byte[] b2 = new byte[b.length / 2]; for (int n = 0; n < b.length; n += 2) { String item = new String(b, n, 2); b2[n / 2] = (byte) Integer.parseInt(item, 16); } return b2; } /** * 解密 * @param data * @return * @throws Exception */ public String getDesString(String data, String CRYPT_KEY) { try { return new String(decrypt(hex2byte(data.getBytes()), CRYPT_KEY)); } catch (Exception e) { e.printStackTrace(); LogUtil.i(TAG, "解密出错"); } return null; } /** * 加密 * @param data * @return * @throws Exception */ public String getEncString(String data, String CRYPT_KEY) { try { return byte2hex(encrypt(data.getBytes(), CRYPT_KEY)); } catch (Exception e) { e.printStackTrace(); LogUtil.i(TAG, "加密出错"); } return null; } }