Java Base64、AES、SHA1、MD5加密算法

egbl9344 8年前

来自: http://my.oschina.net/u/2502527/blog/605816


import java.io.UnsupportedEncodingException;  import java.security.InvalidKeyException;  import java.security.MessageDigest;  import java.security.NoSuchAlgorithmException;  import java.security.SecureRandom;  import javax.crypto.BadPaddingException;  import javax.crypto.Cipher;  import javax.crypto.IllegalBlockSizeException;  import javax.crypto.KeyGenerator;  import javax.crypto.NoSuchPaddingException;  import javax.crypto.SecretKey;  import javax.crypto.spec.SecretKeySpec;     public class DecriptTest {         public static String SHA1(String decript) {          try {              MessageDigest digest = java.security.MessageDigest                      .getInstance("SHA-1");              digest.update(decript.getBytes());              byte messageDigest[] = digest.digest();              // Create Hex String              StringBuffer hexString = new StringBuffer();              // 字节数组转换为 十六进制 数              for (int i = 0; i < messageDigest.length; i++) {                  String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);                  if (shaHex.length() < 2) {                      hexString.append(0);                  }                  hexString.append(shaHex);              }              return hexString.toString();             } catch (NoSuchAlgorithmException e) {              e.printStackTrace();          }          return "";      }         public static String SHA(String decript) {          try {              MessageDigest digest = java.security.MessageDigest                      .getInstance("SHA");              digest.update(decript.getBytes());              byte messageDigest[] = digest.digest();              // Create Hex String              StringBuffer hexString = new StringBuffer();              // 字节数组转换为 十六进制 数              for (int i = 0; i < messageDigest.length; i++) {                  String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);                  if (shaHex.length() < 2) {                      hexString.append(0);                  }                  hexString.append(shaHex);              }              return hexString.toString();             } catch (NoSuchAlgorithmException e) {              e.printStackTrace();          }          return "";      }         public static String MD5(String input) {          try {              // 获得MD5摘要算法的 MessageDigest 对象              MessageDigest mdInst = MessageDigest.getInstance("MD5");              // 使用指定的字节更新摘要              mdInst.update(input.getBytes());              // 获得密文              byte[] md = mdInst.digest();              // 把密文转换成十六进制的字符串形式              StringBuffer hexString = new StringBuffer();              // 字节数组转换为 十六进制 数              for (int i = 0; i < md.length; i++) {                  String shaHex = Integer.toHexString(md[i] & 0xFF);                  if (shaHex.length() < 2) {                      hexString.append(0);                  }                  hexString.append(shaHex);              }              return hexString.toString();          } catch (NoSuchAlgorithmException e) {              e.printStackTrace();          }          return "";      }         /**       * 加密       *       * @param content       *            需要加密的内容       * @param password       *            加密密码       * @return       */      public static byte[] encryptAES(String content, String password) {          try {              KeyGenerator kgen = KeyGenerator.getInstance("AES");              kgen.init(128, new SecureRandom(password.getBytes()));              SecretKey secretKey = kgen.generateKey();              byte[] enCodeFormat = secretKey.getEncoded();              SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");              Cipher cipher = Cipher.getInstance("AES");// 创建密码器              byte[] byteContent = content.getBytes("utf-8");              cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化              byte[] result = cipher.doFinal(byteContent);              return result; // 加密          } catch (NoSuchAlgorithmException e) {              e.printStackTrace();          } catch (NoSuchPaddingException e) {              e.printStackTrace();          } catch (InvalidKeyException e) {              e.printStackTrace();          } catch (UnsupportedEncodingException e) {              e.printStackTrace();          } catch (IllegalBlockSizeException e) {              e.printStackTrace();          } catch (BadPaddingException e) {              e.printStackTrace();          }          return null;      }         /**       * 解密       *       * @param content       *            待解密内容       * @param password       *            解密密钥       * @return       */      public static byte[] decryptAES(byte[] content, String password) {          try {              KeyGenerator kgen = KeyGenerator.getInstance("AES");              kgen.init(128, new SecureRandom(password.getBytes()));              SecretKey secretKey = kgen.generateKey();              byte[] enCodeFormat = secretKey.getEncoded();              SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");              Cipher cipher = Cipher.getInstance("AES");// 创建密码器              cipher.init(Cipher.DECRYPT_MODE, key);// 初始化              byte[] result = cipher.doFinal(content);              return result; // 加密          } catch (NoSuchAlgorithmException e) {              e.printStackTrace();          } catch (NoSuchPaddingException e) {              e.printStackTrace();          } catch (InvalidKeyException e) {              e.printStackTrace();          } catch (IllegalBlockSizeException e) {              e.printStackTrace();          } catch (BadPaddingException e) {              e.printStackTrace();          }          return null;      }         /**       * BASE64解密       *       * @param key       * @return       * @throws Exception       */      public static String decryptBASE64(String key) {             return "";      }         /**       * BASE64加密       *       * @param key       * @return       * @throws Exception       */      public static String encryptBASE64(String key) {             return "";      }  }