zoukankan      html  css  js  c++  java
  • MD5介绍

    md5介绍

    1. md5简介

    md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节,1字节8位)的散列值(常见的是用32位的16进制表示,比如:0caa3b23b8da53f9e4e041d95dc8fa2c),用于确保信息传输的完整一致。

    2. md5原理

    md5将整个文件当做一个大文本信息,通过不可逆的字符串变换算法,产生一个唯一的MD5信息摘要。文件的md5类似于人的指纹,在世界上是独立无二的,如果任何人对文件做了任何改动,其md5的值也就是对应的“数字指纹”都会发生变化。

    对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

    md5与对称和非对称加密算法不同,这两种密码是防止信息被窃取,而摘要算法的目标是用于证明原文的完整性。

    3. md5特性

    1. 不可逆

    没有系统有办法知道md5原来的文字是什么。

    2. 具有高度的离散性

    md5码具有高度的散列性,没有规律可循,哪怕原信息只有一点点的变化,比如多个空格,那么就会导致md5发生巨大变化,也可以说产生的md5码是不可预测的。

    3. 压缩性

    任意长度的数据,算出的md5值得长度都是固定的。

    4. 弱碰撞性

    已知原数据和其md5的值,想找到一个具有相同md5值得数据(即伪造数据)是非常困难的。

    4. md5的用途

    • 密码的加密存储,用户设置密码时,服务端只记录这个密码的MD5,而不记录密码本身,以后验证用户身份时,只需要将用户输入的密码再次做一下MD5后,与记录的MD5作一个比较即可验证其密码的合法性。
    • 数字签名,比如发布一个程序,为了防止别人在你的程序里插入病毒或木马,你可以在发布这个程序的同时,公开这个程序文件的MD5码,这样别人只需要在任何地方下载这个程序后做一次MD5,然后跟公开的这个MD5作一个比较就知道这个程序是否被第三方修改过。
    • 文件完整性验证,比如当下载一个文件时,服务器返回的信息中包括这个文件的md5,在本地下载完毕时进行md5,将两个md5值进行比较,如果一致则说明文件完整没有丢包现象。
    • 文件上传,比如百度云实现的秒传,就是对比你上传的文件md5在百度服务器是否已经存在了。

    5. 一些疑问

    1. 同一个文件用不同的语言计算出来的md5一样吗?

    只要算法正确,都是一样的。

    2. 拷贝的文件md5会改变吗?

    不会。

    3. 还有什么其他的摘要算法么?

    除了MD5,还有更安全的SHA-1,SHA-2(包括SHA-224、SHA-256、SHA-384,和SHA-512 ),SHA-3,RIPEMD-160等哈希加密算法

    参考:

    关于王小云破解MD5之我见 :https://blog.csdn.net/raptor/article/details/97270

    MD5作用有哪些:https://blog.csdn.net/jike_yangyujing/article/details/80512205

    MD5算法原理及其实现:https://blog.csdn.net/u012611878/article/details/54000607

  • 相关阅读:
    PHP 大小写转换、首字母大写、每个单词首字母大写转换相关函数
    【论文学习4】BiSample: Bidirectional Sampling for Handling Missing Data with Local Differential Privacy
    【论文学习3】Local Differential Privacy for Deep Learning
    【论文学习2】 Differential Privacy Reinforcement Learning
    深度学习中的优化算法
    Spatial crowdsourcing
    “pip install tensorflow ”出现错误
    python或pip'不是内部或外部命令”
    pip install torch出现错误
    打不开gitHub的解决方法
  • 原文地址:https://www.cnblogs.com/scuwangjun/p/9507950.html
Copyright © 2011-2022 走看看