Android:MD5 32位 16位小写加密
2013-10-17 14:23
399 查看
Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。MD5用的是哈希函数,在计算机网络中应用较多的不可逆加密算法有RSA公司发明的MD5算法和由美国国家技术标准研究所建议的安全散列算法SHA。
/** * MD5 32位加密方法一 小写 * @param str * @return */ public final static String get32MD5(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(); //使用MD5创建MessageDigest对象 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 b = md[i]; //System.out.println((int)b); //将没个数(int)b进行双字节加密 str[k++] = hexDigits[b >> 4 & 0xf]; str[k++] = hexDigits[b & 0xf]; } return new String(str); } catch (Exception e) { return null; }
/** * MD5 32位加密方法二 小写 * @param str * @return */ public final static String get32MD5Str(String str) { MessageDigest messageDigest = null; try { messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(str.getBytes("UTF-8")); } catch (NoSuchAlgorithmException e) { System.out.println("NoSuchAlgorithmException caught!"); System.exit(-1); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } byte[] byteArray = messageDigest.digest(); StringBuffer md5StrBuff = new StringBuffer(); for (int i = 0; i < byteArray.length; i++) { if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i])); else md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i])); } return md5StrBuff.toString(); }
/** * Md5 32位 or 16位 加密 * @param plainText * @return 32位加密 */ public static String Md5(String plainText ) { StringBuffer buf = null; try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(plainText.getBytes()); byte b[] = md.digest(); int i; buf = new StringBuffer(""); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if(i<0) i+= 256; if(i<16) buf.append("0"); buf.append(Integer.toHexString(i)); } // Log.e("555","result: " + buf.toString());//32位的加密 //Log.e("555","result: " + buf.toString().substring(8,24));//16位的加密 } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } return buf.toString(); }
附:java String 转化成 MD5 byte[] public static byte[] hexStringToByte(String hex) { int len = (hex.length() / 2); byte[] result = new byte[len]; char[] achar = hex.toCharArray(); for (int i = 0; i < len; i++) { int pos = i * 2; result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1])); } return result; } private static byte toByte(char c) { byte b = (byte) "0123456789abcdef".indexOf(c); return b; }
相关文章推荐
- android:MD5 32位16位小写加密
- android:MD5 32位16位小写加密
- Android中MD5(16位或32位)加密工具类.
- 关于C++ MD5加密32位(小写)
- Asp md5加密16位,32位
- MD5 32位 小写加密和大写加密
- 在线破解16位和32位的MD5加密结果的网站
- 说说 MD5 加密后的类型(16位与 32位的区别)
- 123456加密md5是多少md5密码16位和32位加密
- php md5加密16位32位的实现代码
- MD5 32位、16位加密
- Java 二次MD5 32位小写加密算法与php页面加密结果相同
- C# MD5 16位和32位加密
- (vb.net)MD5 32位加密小写输入
- MD5简单加密实现32位16位字符
- C# MD5-16位加密和MD5-32位加密
- MD5 32位 小写加密和大写加密
- MD5加密组件,提供加密为32位,或16位
- C# MD5-16位加密实例,32位加密实例(两种方法)(转)
- C# MD5-16位加密实例,32位加密实例(两种方法)