关闭

java MD5校验

标签: java
107人阅读 评论(0) 收藏 举报
分类:

为什么要用MD5校验

我们平时在网站上注册, 会保存用户名和密码. 但是, 究竟密码在网站后台是怎样保存的呢? 是不是直接将密码的字符串保存就行了呢? 显然这样是有安全隐患的, 万一数据库被攻破了, 所有密码就泄露了.

所以, 网站要有一个叫做MD5摘要的东西, 简单的来说, 就是通过MD5算法, 将用户设置的密码字符串转换成一个十六进制的字符串, 再将这个字符串存在数据库中.

那么, 这是不是代表着, 我们要先将密码字符串进行加密, 然后再存放呢?

也不是, 因为任何一种加密的算法, 都会有对应的解密算法. 然而MD5摘要, 只有加密, 没有解密. 他是一种使得信息量缩减的算法, 特点只在于, 使得任何两个字符串或者文件, 只要字节稍微有一点点不一样, 出来的十六机制字符串就会有很大的不同.

因此, 我们无论是比较字符串也好, 还是比较两个文件是不是同一个文件也好, 我们往往只需要比较他们的MD5摘要, 看看是不是一样的就ok了.

有些网站可能会给出字典, 你输入一个MD5码, 他会给你查到他们对应的字符串. 但是, 如果你后台的程序中, 在将用户的密码转换成MD5之前, 还做一些手脚, 比如在字符串后面添加一段固定的或者随机生成的乱码, 这样就没办法通过查字典的方法来破解了.

怎样实现从字符串到MD5字符串?

java中有现成的库, 我们可以自己建立一个工具类, 将这个库中的特定的函数包装起来就行.

package com.common.tools;

import java.security.MessageDigest;

/**
 * MD5加密工具类
 * <功能详细描述>
 * 
 * @author  chenlujun
 * @version  [版本号, 2014年10月1日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public abstract class MD5Tools
{
    public final static String MD5(String pwd) {
        //用于加密的字符
        char md5String[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                'A', 'B', 'C', 'D', 'E', 'F' };
        try {
            //使用平台的默认字符集将此 String 编码为 byte序列,并将结果存储到一个新的 byte数组中
            byte[] btInput = pwd.getBytes();

            //信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。
            MessageDigest mdInst = MessageDigest.getInstance("MD5");

            //MessageDigest对象通过使用 update方法处理数据, 使用指定的byte数组更新摘要
            mdInst.update(btInput);

            // 摘要更新之后,通过调用digest()执行哈希计算,获得密文
            byte[] md = mdInst.digest();

            // 把密文转换成十六进制的字符串形式
            int j = md.length;
            char str[] = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++) {   //  i = 0
                byte byte0 = md[i];  //95
                str[k++] = md5String[byte0 >>> 4 & 0xf];    //    5 
                str[k++] = md5String[byte0 & 0xf];   //   F
            }

            //返回经过加密后的字符串
            return new String(str);

        } catch (Exception e) {
            return null;
        }
    }
}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

JAVA项目三:JAVA实现MD5文件校验

文章总结自 实验楼MD5 的中文名叫做 “信息摘要算法第五版”,是一种不可逆的算法。通俗的话说就是没办法通过任何算法来对其加密的值进行破解。MD5经常被应用在验证文件一致性、数字证书和安全访问认证方面。MD5 可以对任何文件产生独一无二的数字指纹,文件有任何改动,MD5 值的数据指纹都会发生变化。一...
  • wu2304211
  • wu2304211
  • 2016-07-26 21:48
  • 3512

Java文件的MD5校验和CRC校验

1、CRC校验 使用7Z 开源SDK中提供的功能类 // SevenZip/CRC.java package SevenZip; public class CRC { static public int[] Table = new int[256]; static { for (i...
  • mfcing
  • mfcing
  • 2015-09-05 22:04
  • 2221

java生成MD5校验码

在Java中,java.security.MessageDigest (rt.jar中)已经定义了 MD5 的计算,所以我们只需要简单地调用即可得到 MD5 的128 位整数。然后将此 128 位计 16 个字节转换成 16 进制表示即可。      &...
  • henryzhang2009
  • henryzhang2009
  • 2015-01-23 15:35
  • 1028

java MD5加密检验思路

md5加密和验证
  • qq_22778717
  • qq_22778717
  • 2016-12-27 17:58
  • 487

Java实现MD5加密和文件校验

MD5的加密方式是一种哈希加密。一些主流的编程语言都已经实现了MD5的加密,所以如果你的程序或是系统涉及到在多种语言之间的校验,那么MD5可以是备选之一。不过因为MD5是采用哈希函数来进行的加密,所以它无关密钥,也就是说在确定了明文的情况下,MD5就可以加密。不过MD5是不可逆的,只能加密,不能解密...
  • u013761665
  • u013761665
  • 2015-07-01 22:51
  • 3177

java中字符串 MD5密码的加密与验证

java中字符串 MD5密码的加密与验证   MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。    将数据(如汉字)运算为...
  • lvyuanj
  • lvyuanj
  • 2014-05-24 19:26
  • 3924

生成文件md5校验码可满足大于2G情况

对于文件生成md5校验码,在实际开发中用处很大,有利于比较服务器上是否已经存在该文件,哪怕文件名不一致也无所谓。 由于存在超大文件,经过从网上查找,得到两种方法,一种是利用MappedByteBuffer对于超大文件缓冲,效率高 代码片段如下: public static String g...
  • dirful
  • dirful
  • 2015-12-18 17:17
  • 2102

签名校验,安全相关,MD5签名校验, keyWord防sql注入校验默

package com.lvmama.sso.web.mobile; import java.io.PrintWriter; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Collectio...
  • jakeswang
  • jakeswang
  • 2016-08-04 11:25
  • 328

Java对大文件MD5解密详解

MD5是常用的加密算法,也经常用于校验信息完整,如文件的完整性。用术语讲,MD5是一种消息摘要算法(Message Digest Algorithm)。另外还有一种常用的消息摘要算法SHA1。如果想了解这些的话,可以去百度百科:MD5、SHA1、消息摘要算法。   ...
  • zmx729618
  • zmx729618
  • 2017-05-23 16:12
  • 1871

基于md5的文件完整性检测

维基百科是这样来解释 m
  • yimiyangguang1314
  • yimiyangguang1314
  • 2014-07-30 11:56
  • 7362
    个人资料
    • 访问:2012次
    • 积分:117
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档