精华内容
下载资源
问答
  • MD5摘要加密

    2015-04-07 18:41:30
    MD5摘要加密算法详细举例,不可逆算法,加密之后返回的是一个字节数组
  • MD5摘要

    千次阅读 2018-05-23 20:35:35
    MD5什么用?MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。更多用在文档校验上,...

    MD5简介

    MD5即Message-Digest Algorithm 5(信息-摘要算法),属于摘要算法,是一个不可逆过程,就是无论多大数据,经过算法运算后都是生成固定长度的数据,结果使用16进制进行显示的128bit的二进制串通常表示为32个十六进制数连成的字符串。

    MD5有什么用?

    用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。

    更多用在文档校验上,用来生成密钥检测文档是否被篡改。

    理论上MD5是不可逆的,而且MD5本来也不是作加密使用,而是用来校验数据的完整性。譬如,我们用迅雷下载电影,就有个MD5校验:

    这里写图片描述

    平时,我们在云盘上,秒传文件,可以通过MD5校验实现:

    1. 客户端在上传文件之前将文件的MD5码上传到服务器
    2. 服务器端判断是否已存在此MD5码(MD5校验),如果存在,说明该文件已存在,则此文件无需再上传,在此文件的计数器加1,说明此文件多了一个用户共用
    3. 如果服务器没有此MD5码,说明上传的文件是新文件,则真正上传此文件

    只是因为其不可逆且稳定、快速的特点,被广泛用于对明文密码的加密。

    但是简单密码来说,破解者完全可以将一定范围内的密码字典全部计算出来之后存为数据库,之后直接查询进行破解。

    用户重要信息(如密码)不应该明文保存到数据库,可以通过MD5加密后再保存: 

    这里写图片描述

    所谓加密:

            加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。

            加密技术包括两个元素:算法和密钥;算法是将普通的信息或者可以理解的信息与一串数字结合,产生不可理解的密文的步骤;密钥是用来对数据进行编码和解密的一种算法。

            在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。

    所谓哈希:

            Hash,一般翻译做"散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。

            这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。

            简单的说就是一种将任意长度的消息压缩到某一固定长度的信息摘要的函数。

            HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值. 也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系。

            Hash算法在信息安全方面的应用主要体现在以下的3个方面:

            1) 文件校验

            我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。

            2) 数字签

            Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。

            3) 鉴权协议

            鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。

        应用:1.一致性验证;2.数字签名;3.安全访问验证。

    展开全文
  • MD5摘要算法

    千次阅读 2016-01-08 16:12:11
    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值...

            MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。

     MD5算法具有以下特点:

    1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
    2、容易计算:从原数据计算出MD5值很容易。
    3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
    4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
    MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

    点击阅读更多原理介绍

    JAVA中的摘要算法简单示例:

     

    package com.zhuifeng.util;
    import java.security.MessageDigest;  
    /**
     * @author guoxk
     *
     * @version 创建时间 2016年1月7日 下午1:47:06
     *
     * 类描述:MD5加密工具类
     *
     */
    public class MD5Util{  
    	/**
    	 * @author guoxk
    	 *
    	 * 方法描述:MD5加密方法
    	 * @param str 明文
    	 * @param charSet 字符编码
    	 * @return 密文
    	 */
        public  static String MD5(String str,String charSet) {
        	MessageDigest messageDigest = null;  
    	try {  
    		messageDigest = MessageDigest.getInstance("MD5");  
    		messageDigest.reset(); 
    		if(charSet==null){
    			messageDigest.update(str.getBytes());
    		}else{
    			messageDigest.update(str.getBytes(charSet));  
    		}			
    	} catch (Exception 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();  
    
        }
        /**
         * @author guoxk
         *
         * 方法描述:MD5加密方法 --- UTF-8编码
         * @param s 明文
         * @return 密文
         */
        public  static String MD5(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("utf-8");
                // 获得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;
            }
        }
        public static void main(String[] args) {
    	String password = "ming wen mi ma";
    	System.out.println("原明文:" + password);
    	String pw = MD5(password);//默认utf-8编码加密,32位大写,
    	System.out.println("32位大写UTF-8加密后:" + pw);//C0389AC882DFCCA5592628F139F7A975
    	String pw2 = MD5(password,"GBK");//自定义编码加密,32位小写
    	System.out.println("32位小写自定义编码加密后:" + pw2);//c0389ac882dfcca5592628f139f7a975
        }
    } 

     


     

    展开全文
  • VC++ 文件MD5摘要

    2010-11-23 11:28:13
    VC++ 文件MD5摘要 VC++ 文件MD5摘要 测试能过
  • MD5 摘要算法应用详解

    千次阅读 2020-06-23 23:37:32
      MD5是典型的消息摘要算法,是广泛使用的消息摘要算法之一,更是消息摘要算法首要代表。其前身包括MD2、MD4。MD算法家族针对源数据会产生一个128位的消息摘要。在一般应用场景下,会将128二进制摘要信息转换为...

      MD5简介:

      MD5是典型的消息摘要算法,是广泛使用的消息摘要算法之一,更是消息摘要算法首要代表。其前身包括MD2、MD4。MD算法家族针对源数据会产生一个128位的消息摘要。在一般应用场景下,会将128二进制摘要信息转换为十六进制,可以得到一个32位的十六进制字符串。

      MD5的发展经历了MD2、MD4系列算法:

      · MD2:1989年,RSA的发明人之一(罗纳德·李维斯特)开发了MD2算法。

    ​  1)首先对信息进行数据补位,使信息的字节长度是16的倍数。

      2)以一个16位的检验和作为补充信息追加到原信息的末尾。

      3)最后根据这个新产生的信息计算出一个128位的散列值。

      · MD4:1990年,罗纳德·李维斯特在MD2的基础上开发出了安全性更高的MD4算法。MD4仍需对信息进行数据补位。不同的是,这种补位使其信息的字节长度加上448个字节后成为512的倍数(信息字节长度mod 512 =448)。此外,关于MD4算的处理和MD2算法有很大的差别。但最终仍旧会获得一个128为的散列值。MD4算法对后续消息摘要算法起到了推动作用, 许多比较有名的消息摘要算法都是在MD4算法的基础上发展而来的,如MD5、SHA-1、RIPE-MD和HAVAL算法等。

      · MD5:1991年,继MD4算法后,罗纳德·李维斯特开发了MD5算法,将MD算法推向成熟。MD5算法经MD2、MD4算法发展而来,算法复杂程度和安全度得到了大大的提高。但无论是哪种MD算法,最终都会得到一个128位的散列值。MD5执行效率略次于MD4,但在安全性方面,MD5更胜一筹。

      MD5特性:

      1)压缩性:任意长度数据,都可以计算出固定长度的MD5值。

      2)容易计算:从原数据可以容易计算出MD5值。

      3)抗修改性:对原数据进行任意改动,计算出的MD5值都会发生变化。

      4)弱抗碰撞:已知原数据和MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

      5)强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

      应用场景:

      · 软件校验

      很多软件,尤其是安全性要求较高的软件,会在官网上公布软件的MD5值,用户下载软件后,可以自行计算软件MD5值,然后与官网公布的MD5值进行比较,确认软件是否被篡改过。

      · 基于口令的加密

      MD5也被用于基于口令的加密(Password Based Encryption,PBE),PBE的原理是将口令和盐(salt)混合后计算其MD5值,然后将这个散列值用作加密的秘钥。PBE可以防御针对口令的字典攻击。

      · 消息认证码

      消息认证码是将“发送者和接收者之间的共享秘钥”和“消息”进行混合后计算出的MD5。使用消息认证码可以检测并防止通信过程中的错误、篡改以及伪装。

      · 数字签名

      数字签名是现实社会中的签名和盖章这样的行为在数字世界中的实现。数字签名的处理过程非常耗时,因此一般不会对整个消息内容施加数字签名,而是先取消息内容的MD5值,对MD5值进行数字签名。

      演示示例:

      除了JDK外,很多开源工具也对MD算法做了实现,其中包括Bouncy Castle、Commons Codec等。

      JDK原生示例:

    package com.securitit.serialize.md5;
    
    import java.security.MessageDigest;
    
    import org.apache.commons.codec.binary.Hex;
    
    public class JdkMdTester {
    
    	public static void main(String[] args) throws Exception {
    		String plainText = "Hello MD! This is my MD test program!";
    		byte[] md2Bts = encodeMd2(plainText.getBytes("UTF-8"));
    		System.out.println("MD2散列值:" + new String(Hex.encodeHex(md2Bts)));
    		byte[] md5Bts = encodeMd5(plainText.getBytes("UTF-8"));
    		System.out.println("MD5散列值:" + new String(Hex.encodeHex(md5Bts)));
    	}
    
    	public static byte[] encodeMd2(byte[] plainBts) throws Exception {
    		// 初始化MessageDigest.
    		MessageDigest md2 = MessageDigest.getInstance("MD4");
    		// 获取消息摘要.
    		return md2.digest(plainBts);
    	}
    
    	public static byte[] encodeMd5(byte[] plainBts) throws Exception {
    		// 初始化MessageDigest.
    		MessageDigest md5 = MessageDigest.getInstance("MD5");
    		// 获取消息摘要.
    		return md5.digest(plainBts);
    	}
    
    }
    

      输出结果:

    MD2散列值:bdf364fb82e5a89292949610730142a0
    MD5散列值:a505a9d12b9aa595095bd800f63a528f
    

      Bouncy Castle示例:

      第三方加密组件包Bouncy Castle是对JDK的补充,弥补了JDK未提供MD4算法的空白。

    package com.securitit.serialize.md5;
    
    import java.security.MessageDigest;
    import java.security.Security;
    
    import org.apache.commons.codec.binary.Hex;
    import org.bouncycastle.jce.provider.BouncyCastleProvider;
    
    public class BouncyCastleMdTester {
    
    	public static void main(String[] args) throws Exception {
    		String plainText = "Hello MD! This is my MD test program!";
    		byte[] md4Bts = encodeMd4(plainText.getBytes("UTF-8"));
    		System.out.println("MD4散列值:" + new String(Hex.encodeHex(md4Bts)));
    	}
    	
    	public static byte[] encodeMd4(byte[] plainBts) throws Exception {
    		// 加入BouncyCastleProvider支持.
    		Security.addProvider(new BouncyCastleProvider());
    		// 初始化MessageDigest.
    		MessageDigest md4 = MessageDigest.getInstance("MD4");
    		// 获取消息摘要.
    		return md4.digest(plainBts);
    	}
    	
    }
    

      输出结果:

    MD4散列值:fac1db98137baa42b32ee77614ba7884
    

      Commons Codec示例:

      Apache Commons Codec提供了消息摘要工具类DigestUtils,DigestUtils类对JDK提供的MessageDigest进行了封装,使得API的使用更加简洁。

    package com.securitit.serialize.md5;
    
    import org.apache.commons.codec.digest.DigestUtils;
    
    public class CommonsCodecMdTester {
    
    	public static void main(String[] args) throws Exception {
    		String plainText = "Hello MD! This is my MD test program!";
    		System.out.println("MD2散列值:" + DigestUtils.md2Hex(plainText.getBytes("UTF-8")));
    		System.out.println("MD5散列值:" + DigestUtils.md5Hex(plainText.getBytes("UTF-8")));
    	}
    	
    }
    

      输出结果:

    MD2散列值:bdf364fb82e5a89292949610730142a0
    MD5散列值:a505a9d12b9aa595095bd800f63a528f
    

      从上面三种方式示例结果对比可以看出,无论使用哪种方式,同一个字符串的MD值都是一样的。

    展开全文
  • MD5 摘要算法的C语言实现,从 RFC1321 中摘出来的算法实现
  • MD5摘要算法文档.txt

    2021-01-23 19:14:32
    此文本文档是MD5信息摘要算法的描述文档(英文),描述了MD5摘要算法的具体实现,并提供了C语言参考代码,此文件是本人为防止原链接失效而作的备份,如不想消耗积分,请查看此文档的原链接...
  • MD5摘要,采用C语言实现,生成128bit摘要信息
  • 论文:MD5摘要实现

    2008-11-18 16:08:31
    论文:MD5摘要实现 来自.中国科学技术大学
  • md5 信息摘要算法源码

    2021-03-05 15:26:51
    c语言 md5信息摘要算法源码
  • 主要介绍了java实现的MD5摘要算法,结合完整实例形式分析了java实现md5单项加密的具体步骤与相关操作技巧,需要的朋友可以参考下
  • MD5 摘要 16位

    2017-02-20 10:15:44
    之前发了一个MD5 32 位的 . 这里是 MD5 16 位的 .public class MD5Util { /** * MD5加密的工具类 16位的 */ public static String getMD5Str(String str) { MessageDigest messageDigest = null; tr

    之前发了一个MD5 32 位的 . 这里是 MD5 16 位的 .

    public class MD5Util {
        /**
         * MD5加密的工具类   16位的
         */
        public static 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();
        }
    }
    
    展开全文
  • Java生成MD5摘要(MD5 SHA-1)

    千次阅读 2015-04-27 10:38:45
    MD5 (Message Digest Algorithm 5 信息—摘要算法5 ) 的一些体会   一、若我们定义一个函数 ,原型为:  String MD5 ( Information info) 其中Information 表示任意长度的信息,注意是任意长度的。 实现...
  • MD5摘要算法介绍及其实现

    千次阅读 2017-04-04 15:25:09
    Message Digest Algorithm MD5(消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。算法特点MD5算法,符合一般摘要算法的特点: 1、压缩性:任意长度的数据,算出的MD5值...
  • Linux Shell-如何生成MD5摘要信息

    千次阅读 2018-08-26 22:21:41
    如何生成MD5摘要信息? 2 分析 首先操作系统支持openssl的都会有命令md5sum命令,可以使用其进行MD5摘要信息的生成: md5_info="$( echo -n "${MSG}" | openssl md5)"; 由于待实现的操作逻辑...
  • MD5消息摘要算法

    2018-05-24 17:57:02
    MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。
  • MD5取数据摘要.rar

    2020-04-05 04:57:27
    MD5取数据摘要.rar
  • [图片说明](https://img-ask.csdn.net/upload/201707/20/1500530159_945709.png),imei 做md5sum摘要,这究竟是什么,网上找了好久也没有找到对应的方法 。头条给我传过来的imei=5284047f4ffb4e04824a2fd1d1f0cd62 ,...
  • md5值是什么md5值有什么用?

    千次阅读 2021-01-28 21:52:17
    MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。 每个文件对应的md5值是固定的,文件...
  • 本篇文章主要介绍了Java实现MD5消息摘要算法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 当前摘要算法如MD5、SHA-1等特别是MD5因为类似差分路径攻击等算法和计算机性能的提高,大大减少了找碰撞对的难度,加上用户和程序员在设置密码时人为的因素导致,在某些场合下破解成本已经大幅下降 研究了下通过加...
  • 计算字符串的MD5值和MD5文件摘要

    千次阅读 2017-01-19 15:09:21
    md5.h #ifndef __MD5_INCLUDED__ ...//MD5摘要值结构体 typedef struct MD5VAL_STRUCT { unsigned int a; unsigned int b; unsigned int c; unsigned int d; } MD5VAL; //计算字符串的MD5值(若不
  • MD5 消息摘要算法

    2016-10-19 16:39:24
    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值...
  • md5信息摘要算法

    2018-01-12 21:26:19
    # -*- coding: utf-8 -*- # @Author: Clarence # @Date: 2018-01-12 21:04:39 # @Last Modified by: Clarence # @Last Modified time: 2018-01-12 21:17:...md5摘要算法 Message Digest Algorithm MD5 (消息摘要算法第
  • 解决md5摘要长度过长问题

    千次阅读 2018-03-13 17:55:05
    考虑使用md5摘要,但是摘要长度大于64 bits 考虑使用python的内置函数hash,但是生成的hash值可能为负数 解决办法 FNV hash FNV hash 是一种短hash,适用于快速hash大量数据,高度分散的特性...
  • MD5数字摘要

    千次阅读 2017-10-23 11:31:48
    数字摘要也成为消息摘要。它是一个唯一对应一个消息或者文本的固定长度的值,它由一个单向 Hash 函数对消息进行计算产生。如果消息在传递的途中改变了,接受者通过对收到的消息采用相同的 hash 函数重新计算,新产生...
  • MD5 报文摘要算法 源码 并带有详细的说明
  • 完整的md5算法实现,readme.txt中有详细的使用说明,移植进项目非常简单。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,390
精华内容 18,556
关键字:

md5摘要是什么