ITPub博客

首页 > Linux操作系统 > Linux操作系统 > AES加密、解密[转帖]

AES加密、解密[转帖]

原创 Linux操作系统 作者:飞跃的鱼 时间:2012-07-03 17:39:05 0 删除 编辑
/**
 *
 */
package utils;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
/**
 * This program generates a AES key, retrieves its raw bytes, and then
 * reinstantiates a AES key from the key bytes. The reinstantiated key is used
 * to initialize a AES cipher for encryption and decryption.
 */
public class AES {
 private static final String AES = "AES";
 private static final String CRYPT_KEY = "YUUAtestYUUAtest";
 /**
  * 加密
  *
  * @param encryptStr
  * @return
  */
 public static 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
  */
 public static byte[] decrypt(byte[] src, String key) throws Exception {
  Cipher cipher = Cipher.getInstance(AES);
  SecretKeySpec securekey = new SecretKeySpec(key.getBytes(), AES);// 设置加密Key
  cipher.init(Cipher.DECRYPT_MODE, securekey);// 设置密钥和解密形式
  return cipher.doFinal(src);
 }
 /**
  * 二行制转十六进制字符串
  *
  * @param b
  * @return
  */
 public static 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();
 }
 public static 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 final static String decrypt(String data) {
  try {
   return new String(decrypt(hex2byte(data.getBytes()), CRYPT_KEY));
  } catch (Exception e) {
  }
  return null;
 }
 /**
  * 加密
  *
  * @param data
  * @return
  * @throws Exception
  */
 public final static String encrypt(String data) {
  try {
   return byte2hex(encrypt(data.getBytes(), CRYPT_KEY));
  } catch (Exception e) {
  }
  return null;
 }
 public static void main(String[] args) {
  String ID = "1";
  String idEncrypt = encrypt(ID);
  System.out.println(idEncrypt);
  String idDecrypt = decrypt(idEncrypt);
  System.out.println(idDecrypt);
 }
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27121206/viewspace-734490/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 三角
下一篇: oracle 执行计划
请登录后发表评论 登录
全部评论

注册时间:2012-07-02

  • 博文量
    4
  • 访问量
    1693