欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

android AES加密工具类,androidaes工具类, import a

来源: javaer 分享于  点击 27183 次 点评:54

android AES加密工具类,androidaes工具类, import a


    import android.annotation.SuppressLint;      import java.security.SecureRandom;      import javax.crypto.Cipher;      import javax.crypto.KeyGenerator;      import javax.crypto.SecretKey;      import javax.crypto.spec.IvParameterSpec;      import javax.crypto.spec.SecretKeySpec;      /**      *       *       * Author:sunger      */      public class AESUtils {          public static String encrypt(String seed, String cleartext)                  throws Exception {              byte[] rawKey = getRawKey(seed.getBytes());              byte[] result = encrypt(rawKey, cleartext.getBytes());              return toHex(result);          }          public static String decrypt(String seed, String encrypted)                  throws Exception {              byte[] rawKey = getRawKey(seed.getBytes());              byte[] enc = toByte(encrypted);              byte[] result = decrypt(rawKey, enc);              return new String(result);          }          @SuppressLint("TrulyRandom")          private static byte[] getRawKey(byte[] seed) throws Exception {              KeyGenerator kgen = KeyGenerator.getInstance("AES");              SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", "Crypto");              sr.setSeed(seed);              kgen.init(128, sr); // 192 and 256 bits may not be available              SecretKey skey = kgen.generateKey();              byte[] raw = skey.getEncoded();              return raw;          }          private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {              SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");              Cipher cipher = Cipher.getInstance("AES");              cipher.init(Cipher.ENCRYPT_MODE, skeySpec, new IvParameterSpec(                      new byte[cipher.getBlockSize()]));              byte[] encrypted = cipher.doFinal(clear);              return encrypted;          }          private static byte[] decrypt(byte[] raw, byte[] encrypted)                  throws Exception {              SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");              Cipher cipher = Cipher.getInstance("AES");              cipher.init(Cipher.DECRYPT_MODE, skeySpec, new IvParameterSpec(                      new byte[cipher.getBlockSize()]));              byte[] decrypted = cipher.doFinal(encrypted);              return decrypted;          }          private static byte[] toByte(String hexString) {              int len = hexString.length() / 2;              byte[] result = new byte[len];              for (int i = 0; i < len; i++)                  result[i] = Integer.valueOf(hexString.substring(2 * i, 2 * i + 2),                          16).byteValue();              return result;          }          private static String toHex(byte[] buf) {              if (buf == null)                  return "";              StringBuffer result = new StringBuffer(2 * buf.length);              for (int i = 0; i < buf.length; i++) {                  appendHex(result, buf[i]);              }              return result.toString();          }          private final static String HEX = "0123456789ABCDEF";          private static void appendHex(StringBuffer sb, byte b) {              sb.append(HEX.charAt((b >> 4) &amp; 0x0f)).append(HEX.charAt(b &amp; 0x0f));          }      }  
相关栏目:

用户点评