Android加密之Md5,AES 加密
来源:互联网 发布:七匹狼网络营销策划书 编辑:程序博客网 时间:2024/05/07 18:05
1、Md5加密
public final static String Md5Encry(String s) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; try { byte[] strTemp = s.getBytes(); MessageDigest mdTemp = MessageDigest.getInstance("MD5"); mdTemp.update(strTemp); byte[] md = mdTemp.digest(); int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); } catch (Exception e) { e.printStackTrace(); return null; } }
2、AES加、解密
/** AES对称加密解密类 **/public class AESHelper { /** 算法/模式/填充 **/ private static final String CipherMode = "AES/ECB/PKCS5Padding"; private static final String key="秘钥"; /** 创建密钥 **/ private static SecretKeySpec createKey(String password) { byte[] data = null; if (password == null) { password = ""; } StringBuffer sb = new StringBuffer(32); sb.append(password); while (sb.length() < 32) { sb.append("0"); } if (sb.length() > 32) { sb.setLength(32); } try { data = sb.toString().getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return new SecretKeySpec(data, "AES"); } /** 加密字节数据 **/ public static byte[] encrypt(byte[] content, String password) { try { SecretKeySpec key = createKey(password); Cipher cipher = Cipher.getInstance(CipherMode); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] result = cipher.doFinal(content); return result; } catch (Exception e) { e.printStackTrace(); } return null; } /** 加密(结果为16进制字符串) **/ public static String encrypt(String content, String password) { byte[] data = null; try { data = content.getBytes("UTF-8"); } catch (Exception e) { e.printStackTrace(); } data = encrypt(data, password); String result = byte2hex(data); return result; } /** 加密(结果为16进制字符串) **/ public static String encrypt(String content) { return encrypt(content,key); } /** 解密字节数组 **/ public static byte[] decrypt(byte[] content, String password) { try { SecretKeySpec key = createKey(password); Cipher cipher = Cipher.getInstance(CipherMode); cipher.init(Cipher.DECRYPT_MODE, key); byte[] result = cipher.doFinal(content); return result; } catch (Exception e) { e.printStackTrace(); } return null; } /** 解密16进制的字符串为字符串 **/ public static String decrypt(String content1, String password) { byte[] data = null; try { String content=content1.trim(); if(content.contains("\n")) { content=content.replace("\n", ""); } if(content.contains(" ")) { content=content.replace(" ", ""); } data = hex2byte(content); } catch (Exception e) { e.printStackTrace(); } data = decrypt(data, password); if (data == null) return null; String result = null; try { result = new String(data, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return result; } /** 解密16进制的字符串为字符串 **/ public static String decrypt(String content) { return decrypt(content,key); } /** 字节数组转成16进制字符串 **/ public static String byte2hex(byte[] b) { // 一个字节的数, StringBuffer sb = new StringBuffer(b.length * 2); String tmp = ""; for (int n = 0; n < b.length; n++) { // 整数转成十六进制表示 tmp = (java.lang.Integer.toHexString(b[n] & 0XFF)); if (tmp.length() == 1) { sb.append("0"); } sb.append(tmp); } return sb.toString().toUpperCase(); // 转成大写 } /** 将hex字符串转换成字节数组 **/ private static byte[] hex2byte(String inputString) { if (inputString == null || inputString.length() < 2) { return new byte[0]; } inputString = inputString.toLowerCase(); int l = inputString.length() / 2; byte[] result = new byte[l]; for (int i = 0; i < l; ++i) { String tmp = inputString.substring(2 * i, 2 * i + 2); result[i] = (byte) (Integer.parseInt(tmp, 16) & 0xFF); } return result; }}
0 0
- Android加密之Md5,AES 加密
- Android DES AES MD5加密
- Android之AES加密
- android之AES加密
- Android 加密之MD5加密
- iOS 面试问答之加密形式: AES加密, DES加密, MD5加密,SHA1加密, BASE64加密
- unity MD5/AES加密
- Android数据加密之Aes加密
- android之AES加密解密
- Android之"AES"加密解密
- Android之简单加密–MD5 加密
- Android数据加密之MD5加密
- Android数据加密之MD5加密
- DES/AES/MD5加密方法
- MD5 、AES加密、BASE64编码
- DES,RSA,MD5,AES加密
- 加密那些事AES、MD5
- AES加密、MD5摘要算法
- input type date 解决移动端显示placeholder.
- SQL 查询当天、本周、本月记录
- Linux随机数nonblocking pool快速初始化
- plist存储(读取/写入)
- 安卓中自定义简单的组合控件
- Android加密之Md5,AES 加密
- [真格邦]MyEclipse自动补全设置
- web
- 18.Spring学习笔记_切面的优先级(by尚硅谷_佟刚)
- noHttp 简单实用
- 使用Rertrofit+Rxjava实现Android版本更新功能
- ArcGIS for Server服务类型
- 关于C++ const 的全面总结
- Android WebView — Java与Js 交互总结