您的位置:首页 > 理论基础 > 计算机网络

Android网络传输中的加密算法:MD5加密方法

2016-08-04 15:14 344 查看
MD5是网络传输中最常用的算法,了解这个算法原理后就能大致知道加密是怎么一回事了。

MD5是不可逆的,只能加密而不能解密。比如明文是yanzi1225627,得到MD5加密后的字符串是:14F2AE15259E2C276A095E7394DA0CA9
 但不能由后面一大串倒推出yanzi1225627.因此可以用来存储用户输入的密码在服务器上。现在下载文件校验文件是否中途被篡改也是用的它,原理参见:http://blog.csdn.net/forgotaboutgirl/article/details/7258109 无论在Android上还是pc上用java实现MD5都比较容易,因为java已经把它做到了java.security.MessageDigest里。下面是一个MD5Util.java类:

package org.md5.util;  

  

import java.security.MessageDigest;  

public class MD5Util {  

    public final static String getMD5String(String s) {  

        char hexDigits[] = { '0', '1', '2', '3', '4',  

                '5', '6', '7', '8', '9',  

                'A', 'B', 'C', 'D', 'E', 'F' };  

        try {  

            byte[] btInput = s.getBytes();  

            //获得MD5摘要算法的 MessageDigest 对象  

            MessageDigest mdInst = MessageDigest.getInstance("MD5");  

            //使用指定的字节更新摘要  

            mdInst.update(btInput);  

            //获得密文  

            byte[] md = mdInst.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;  

        }  

    }  

}
通过下面两行代码调用:

/************************************MD5加密测试*****************************/
String srcString = "yanzi1225627";
System.out.println("MD5加密后 = " + MD5Util.getMD5String(srcString));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐