AES加密
1 package com.dl.network_flow.utils; 2 3 import javax.crypto.Cipher; 4 import javax.crypto.spec.IvParameterSpec; 5 import javax.crypto.spec.SecretKeySpec; 6 7 import sun.misc.BASE64Decoder; 8 9 public class AES256Encryption { 10 11 // private static String key = "H5gOs1ZshKZ6WikN"; 12 // private static String iv = "8888159601152533"; 13 14 private static final String key = PropertyUtils.getValue("secreKey"); 15 private static final String iv = PropertyUtils.getValue("vector"); 16 17 private static final String KEY_ALGORITHM = "AES"; 18 private static final String CIPHER_ALGORITHM = "AES/CBC/PKCS5Padding"; 19 20 /** 21 * 加密 encrypt 22 * @time 2016年2月25日下午4:57:15 23 * @packageName com.dl.network_flow.utils 24 * @return 25 * @throws Exception 26 */ 27 public static byte[] encrypt(String data) throws Exception { 28 try { 29 30 Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); 31 int blockSize = cipher.getBlockSize(); 32 33 byte[] dataBytes = data.getBytes(); 34 int plaintextLength = dataBytes.length; 35 if (plaintextLength % blockSize != 0) { 36 plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize)); 37 } 38 byte[] plaintext = new byte[plaintextLength]; 39 System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length); 40 41 SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), KEY_ALGORITHM); 42 IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes()); 43 44 cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec); 45 byte[] encrypted = cipher.doFinal(plaintext); 46 47 return encrypted; 48 49 } catch (Exception e) { 50 e.printStackTrace(); 51 return null; 52 } 53 } 54 55 56 public static String encodeBytes(byte[] bytes){ 57 StringBuffer sbfBuffer = new StringBuffer(); 58 for (int i = 0; i < bytes.length; i++) { 59 sbfBuffer.append((char)(((bytes[i]>>4)&0xf)+((int)'a'))); 60 sbfBuffer.append((char)(((bytes[i])&0xf)+((int)'a'))); 61 } 62 return sbfBuffer.toString(); 63 } 64 65 66 67 /** 68 * 解密 desEncrypt 69 * 70 * @time 2016年2月25日下午4:57:20 71 * @packageName com.dl.network_flow.utils 72 * @param data 73 * @return 74 * @throws Exception 75 */ 76 public static String desEncrypt(String data) throws Exception { 77 try { 78 byte[] encrypted1 = new BASE64Decoder().decodeBuffer(data); 79 80 Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM); 81 SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), KEY_ALGORITHM); 82 IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes()); 83 84 cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec); 85 86 byte[] original = cipher.doFinal(encrypted1); 87 String originalString = new String(original); 88 System.out.println(originalString.length()); 89 return originalString; 90 } catch (Exception e) { 91 e.printStackTrace(); 92 return null; 93 } 94 } 95 }
1 package com.dl.network_flow.utils; 2 3 import java.io.UnsupportedEncodingException; 4 import java.security.InvalidKeyException; 5 import java.security.MessageDigest; 6 import java.security.NoSuchAlgorithmException; 7 import java.security.SecureRandom; 8 import javax.crypto.BadPaddingException; 9 import javax.crypto.Cipher; 10 import javax.crypto.IllegalBlockSizeException; 11 import javax.crypto.KeyGenerator; 12 import javax.crypto.NoSuchPaddingException; 13 import javax.crypto.SecretKey; 14 import javax.crypto.spec.SecretKeySpec; 15 16 public class DecriptTest { 17 18 public static String SHA1(String decript) { 19 try { 20 MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1"); 21 digest.update(decript.getBytes()); 22 byte messageDigest[] = digest.digest(); 23 // Create Hex String 24 StringBuffer hexString = new StringBuffer(); 25 // 字节数组转换为 十六进制 数 26 for (int i = 0; i < messageDigest.length; i++) { 27 String shaHex = Integer.toHexString(messageDigest[i] & 0xFF); 28 if (shaHex.length() < 2) { 29 hexString.append(0); 30 } 31 hexString.append(shaHex); 32 } 33 return hexString.toString(); 34 35 } catch (NoSuchAlgorithmException e) { 36 e.printStackTrace(); 37 } 38 return ""; 39 } 40 41 public static String SHA(String decript) { 42 try { 43 MessageDigest digest = java.security.MessageDigest 44 .getInstance("SHA"); 45 digest.update(decript.getBytes()); 46 byte messageDigest[] = digest.digest(); 47 // Create Hex String 48 StringBuffer hexString = new StringBuffer(); 49 // 字节数组转换为 十六进制 数 50 for (int i = 0; i < messageDigest.length; i++) { 51 String shaHex = Integer.toHexString(messageDigest[i] & 0xFF); 52 if (shaHex.length() < 2) { 53 hexString.append(0); 54 } 55 hexString.append(shaHex); 56 } 57 return hexString.toString(); 58 59 } catch (NoSuchAlgorithmException e) { 60 e.printStackTrace(); 61 } 62 return ""; 63 } 64 65 public static String MD5(String input) { 66 try { 67 // 获得MD5摘要算法的 MessageDigest 对象 68 MessageDigest mdInst = MessageDigest.getInstance("MD5"); 69 // 使用指定的字节更新摘要 70 mdInst.update(input.getBytes()); 71 // 获得密文 72 byte[] md = mdInst.digest(); 73 // 把密文转换成十六进制的字符串形式 74 StringBuffer hexString = new StringBuffer(); 75 // 字节数组转换为 十六进制 数 76 for (int i = 0; i < md.length; i++) { 77 String shaHex = Integer.toHexString(md[i] & 0xFF); 78 if (shaHex.length() < 2) { 79 hexString.append(0); 80 } 81 hexString.append(shaHex); 82 } 83 return hexString.toString(); 84 } catch (NoSuchAlgorithmException e) { 85 e.printStackTrace(); 86 } 87 return ""; 88 } 89 90 /** 91 * 加密 92 * 93 * @param content 94 * 需要加密的内容 95 * @param password 96 * 加密密码 97 * @return 98 */ 99 public static byte[] encryptAES(String content, String password) { 100 try { 101 KeyGenerator kgen = KeyGenerator.getInstance("AES"); 102 kgen.init(128, new SecureRandom(password.getBytes())); 103 SecretKey secretKey = kgen.generateKey(); 104 byte[] enCodeFormat = secretKey.getEncoded(); 105 SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); 106 Cipher cipher = Cipher.getInstance("AES");// 创建密码器 107 byte[] byteContent = content.getBytes("utf-8"); 108 cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化 109 byte[] result = cipher.doFinal(byteContent); 110 return result; // 加密 111 } catch (NoSuchAlgorithmException e) { 112 e.printStackTrace(); 113 } catch (NoSuchPaddingException e) { 114 e.printStackTrace(); 115 } catch (InvalidKeyException e) { 116 e.printStackTrace(); 117 } catch (UnsupportedEncodingException e) { 118 e.printStackTrace(); 119 } catch (IllegalBlockSizeException e) { 120 e.printStackTrace(); 121 } catch (BadPaddingException e) { 122 e.printStackTrace(); 123 } 124 return null; 125 } 126 127 /** 128 * 解密 129 * 130 * @param content 131 * 待解密内容 132 * @param password 133 * 解密密钥 134 * @return 135 */ 136 public static byte[] decryptAES(byte[] content, String password) { 137 try { 138 KeyGenerator kgen = KeyGenerator.getInstance("AES"); 139 kgen.init(128, new SecureRandom(password.getBytes())); 140 SecretKey secretKey = kgen.generateKey(); 141 byte[] enCodeFormat = secretKey.getEncoded(); 142 SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); 143 Cipher cipher = Cipher.getInstance("AES");// 创建密码器 144 cipher.init(Cipher.DECRYPT_MODE, key);// 初始化 145 byte[] result = cipher.doFinal(content); 146 return result; // 加密 147 } catch (NoSuchAlgorithmException e) { 148 e.printStackTrace(); 149 } catch (NoSuchPaddingException e) { 150 e.printStackTrace(); 151 } catch (InvalidKeyException e) { 152 e.printStackTrace(); 153 } catch (IllegalBlockSizeException e) { 154 e.printStackTrace(); 155 } catch (BadPaddingException e) { 156 e.printStackTrace(); 157 } 158 return null; 159 } 160 161 public static void main(String[] args) { 162 String str = MD5("siyanlvQ"); 163 System.out.println(str); 164 } 165 }
1 /* strType SHA-256 SHA-512 */ 2 private String SHA(final String strText, final String strType) { 3 // 返回值 4 String strResult = null; 5 6 // 是否是有效字符串 7 if (strText != null && strText.length() > 0) { 8 try { 9 // SHA 加密开始 10 // 创建加密对象 并傳入加密類型 11 MessageDigest messageDigest = MessageDigest 12 .getInstance(strType); 13 // 传入要加密的字符串 14 messageDigest.update(strText.getBytes()); 15 // 得到 byte 類型结果 16 byte byteBuffer[] = messageDigest.digest(); 17 18 // 將 byte 转换为 string 19 StringBuffer strHexString = new StringBuffer(); 20 // 遍歷 byte buffer 21 for (int i = 0; i < byteBuffer.length; i++) { 22 String hex = Integer.toHexString(0xff & byteBuffer[i]); 23 if (hex.length() == 1) { 24 strHexString.append('0'); 25 } 26 strHexString.append(hex); 27 } 28 // 得到返回結果 29 strResult = strHexString.toString(); 30 } catch (NoSuchAlgorithmException e) { 31 System.out.println(e.getMessage()); 32 } 33 } 34 return strResult; 35 }