Android中ASE加密算法工具类
来源:互联网 发布:ubuntu如何设置ip地址 编辑:程序博客网 时间:2024/06/08 17:43
package com.m520it.jdmall.util;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;public class AESUtils { public static final String KEY = "1234567891234567"; public static String encrypt(String src) throws Exception { byte[] rawKey = getRawKey(KEY.getBytes()); byte[] result = encrypt(rawKey, src.getBytes()); return toHex(result); } public static String decrypt(String encrypted) throws Exception { byte[] rawKey = getRawKey(KEY.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"); // SHA1PRNG 强随机种子算法, 要区别4.2以上版本的调用方法 SecureRandom sr = null; if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.JELLY_BEAN) { sr = SecureRandom.getInstance("SHA1PRNG", "Crypto"); } else { sr = SecureRandom.getInstance("SHA1PRNG"); } sr.setSeed(seed); kgen.init(256, sr); // 256 bits or 128 bits,192bits SecretKey skey = kgen.generateKey(); byte[] raw = skey.getEncoded(); return raw; } private static byte[] encrypt(byte[] key, byte[] src) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(src); return encrypted; } private static byte[] decrypt(byte[] key, byte[] encrypted) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(key, "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)); }}
阅读全文
0 0
- Android中ASE加密算法工具类
- Android AES加密算法工具类
- 加密算法RSA+ASE使用情境
- MD5、RSA、Base64、ASE加密算法
- Android 中对称加密算法DES,DESede,AES的加密和解密 的工具类的使用
- Android、Java中16位及32位MD5加密算法工具类,直接使用!!!
- MD5加密算法工具类
- 常用加密算法工具类
- DES加密算法工具类
- 加密算法工具类
- MD5加密算法工具类
- DES加密算法工具类
- Android常用加密算法MD5工具
- Android中加密算法
- Android中MD5加密算法
- Java 中MD5 和SHA加密算法工具类
- 简单的加密算法(MD5,base64,ASE)
- android ASE开发
- Eclipse配置git,提交项目
- 福州大学2271x——弗洛伊德最短路
- Android动画解析(一)
- 模仿最新版爱奇艺卡片式轮播效果CardBannerDemo
- 带你玩转Netty(二)
- Android中ASE加密算法工具类
- Android Binder-框架简析
- 2017百度之星资格赛1003 度度熊与邪恶大魔王(完全背包)
- Unity3D之进度条插件Loading Component
- HDU4686 Arc of Dream 矩阵快速幂
- HDUOJ 2072单词数
- 【C++】字符串的长度、大小
- java笔记
- 使用xml配置组装bean