本文实例分析了Android编程之MD5加密算法。分享给大家供大家参考,具体如下:
Android MD5加密算与J2SE平台一模一样,因为Android 平台支持 java.security.MessageDigest这个包。实际上与J2SE平台一模一样。
算法签名:
输入一个String(需要加密的文本),得到一个加密输出String(加密后的文本)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package com.tencent.utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * 对外提供getMD5(String)方法 * @author randyjia * */ public class MD5 { public static String getMD5(String val) throws NoSuchAlgorithmException{ MessageDigest md5 = MessageDigest.getInstance( "MD5" ); md5.update(val.getBytes()); byte [] m = md5.digest(); //加密 return getString(m); } private static String getString( byte [] b){ StringBuffer sb = new StringBuffer(); for ( int i = 0 ; i < b.length; i ++){ sb.append(b[i]); } return sb.toString(); } } |
结束
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
/* * MD5加密 */ private String getMD5Str(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])); } //16位加密,从第9位到25位 return md5StrBuff.substring( 8 , 24 ).toString().toUpperCase(); } |
补充:Android MD5加密字符串示例
这里将字符串进行MD5加密,返回加密后的字符串(实际上是该字符串的报文摘要)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public static String md5(String string) { byte [] hash; try { hash = MessageDigest.getInstance( "MD5" ).digest(string.getBytes( "UTF-8" )); } catch (NoSuchAlgorithmException e) { throw new RuntimeException( "Huh, MD5 should be supported?" , e); } catch (UnsupportedEncodingException e) { throw new RuntimeException( "Huh, UTF-8 should be supported?" , e); } StringBuilder hex = new StringBuilder(hash.length * 2 ); for ( byte b : hash) { if ((b & 0xFF ) < 0x10 ) hex.append( "0" ); hex.append(Integer.toHexString(b & 0xFF )); } return hex.toString(); } |
希望本文所述对大家Android程序设计有所帮助。