MD5加密算法及应用
来源:互联网 发布:缅甸非法网络彩票赌博 编辑:程序博客网 时间:2024/06/05 20:50
先说一句据我了解MD5向源信息的转变是一个不可逆的过程。没有解密算法。不过目前好像已经被破解了山东大学王小云教授
主要有以下两方面的应用:
1.数字签名:可以检测文件或其他应用的完整性,判断有无修改;
数字签名技术普遍应用于软件下载站,论坛数据库,系统文件安全等方面,如:当我们下载某一软件时,经常会在该软件的描述信息中找到其MD5值来用于下载后的校验过程,从而有效防止病毒。
2.MD5还普遍应用于操作系统或一般系统的登录认证上,如当我们开发使用人员管理系统时,发现数据库表中所存储的用户密码并不是用户所输入的原生态的密码格式,而是经过MD5处理后的一段字符串。当用户登录的时候,系统把用户输入的密码进行MD5 Hash运算,在和数据库表中的md5值进行比较来确定输入密码是否正确。这样便避免了普通用户的密码被具有系统管理员权限的用户查到,即使查数据库,得到的也只是MD5处理后的信息
加密算法:
import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD5Util {public String getMD5(byte[] source){String s=null;//用来将字节转换成16进制表示的字符char[] hexDigits={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};try {MessageDigest md=MessageDigest.getInstance("MD5");md.update(source);//MD5的计算结果是一个128位的长整数,用字节表示为16个字节byte[] tmp=md.digest();//每个字节用16进制表示的话,使用2个字符(高4位一个,低4位一个),所以表示成16进制需要32个字符char[] str=new char[16*2];int k=0;//转换结果中对应的字符位置for(int i=0;i<16;i++){//对MD5的每一个字节转换成16进制字符byte byte0=tmp[i];str[k++]=hexDigits[byte0>>>4 & 0xf];//对字节高4位进行16进制转换str[k++]=hexDigits[byte0 & 0xf]; //对字节低4位进行16进制转换}s=new String(str);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return s;}public static void main(String[] args) {MD5Util md5Util=new MD5Util();String result=md5Util.getMD5("abc".getBytes());System.out.println(result);}}
改良版,加密string类型:
/*** * MD5加码 生成32位md5码 */public static String string2MD5(String inStr){MessageDigest md5 = null;try{md5 = MessageDigest.getInstance("MD5");}catch (Exception e){System.out.println(e.toString());e.printStackTrace();return "";}char[] charArray = inStr.toCharArray();byte[] byteArray = new byte[charArray.length];for (int i = 0; i < charArray.length; i++)byteArray[i] = (byte) charArray[i];byte[] md5Bytes = md5.digest(byteArray);StringBuffer hexValue = new StringBuffer();for (int i = 0; i < md5Bytes.length; i++){int val = ((int) md5Bytes[i]) & 0xff;if (val < 16)hexValue.append("0");hexValue.append(Integer.toHexString(val));}return hexValue.toString();}
0 0
- MD5加密算法及应用
- Md5加密算法的原理及应用
- Md5加密算法的原理及应用
- Md5加密算法的原理及应用
- 关于Md5加密算法的原理及应用
- #MD5 加密算法及实现
- MD5加密算法及BASE64编码
- MD5加密算法原理及实现
- MD5加密算法原理及实现
- Java常用加密算法应用MD5,SHA,RSA
- MD5加密算法在ASP中的应用
- Java常用加密算法应用MD5,SHA,RSA
- JSP中MD5加密算法与应用
- MD5加密算法的原理和应用
- MD5加密算法(java及js)
- [C++] MD5加密算法原理及实现
- MD5加密算法
- md5加密算法
- TOMCAT 之 startup.bat文件分析
- listview的上拉加载,下拉刷新
- Android自定义View(一)
- STL中的排序函数(模板)
- java笔试+面试总结——mysql
- MD5加密算法及应用
- Java中的abstract方法和abstract类的问题
- 06_多线程_生产者消费者
- Android 开发规范
- 计算机学生的未来
- 线性代数
- aix, dlopen(NULL, .), and gcc
- [通俗易懂] ARM与X86不具备可比性 性能差距可大上千倍
- Ubuntu 12.04 安装 gcc-4.8 及 gdb 7.6