阅读更多
import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;/** * Android 加密解密字符串(转载eoe) * @author  * */public class SimpleCrypto {public static void main(String[] args) throws Exception {System.out.println(encrypt("xwq",""));}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);}private static byte[] getRawKey(byte[] seed) throws Exception {KeyGenerator kgen = KeyGenerator.getInstance("AES");SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");sr.setSeed(seed);kgen.init(128, sr); // 192 and 256 bits may not be availableSecretKey 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);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);byte[] decrypted = cipher.doFinal(encrypted);return decrypted;}public static String toHex(String txt) {return toHex(txt.getBytes());}public static String fromHex(String hex) {return new String(toByte(hex));}public 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;}public 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) & 0x0f)).append(HEX.charAt(b & 0x0f));}}

更多相关文章

  1. 转载 android 利用ksoap2方式连接webservice
  2. 【android 其他】转载:Android(安卓)简史
  3. Android(安卓)recyclerview实现查看更多/收起功能
  4. android图片转换代码
  5. Android解析Xml字符串例子
  6. [android] android framework中的 PhoneNumberUtils 类详解
  7. android 第一季
  8. Android(安卓)小的知识片
  9. Android起步--简单的乘法

随机推荐

  1. Shiro源码分析----登录流程
  2. 案例 | 可视化的方式解决 Dev 和 Ops 的
  3. 博文|你还在用python写API,赶紧体验全新cu
  4. 腾讯与百度的持续交付案例 | 乔梁专栏
  5. Juniper防火墙基于带外管理实例配置SNMP
  6. 注定不平凡的2019~~
  7. 直播 | 开启你的阿拉丁神灯
  8. oracle如何处理行锁
  9. Linux基础-20day-linux磁盘分区(fdisk/par
  10. JavaScript变量中你不知道的几个小埋伏!