zoukankan      html  css  js  c++  java
  • hashlib加密模块详解

    1.hash是把任意长度的消息压缩到某一固定长度的数值的函数。

    hash主要用于安全加密,把一些不同长度的信息转化成杂乱的128位编码里,叫做hash值。

    hash就是把内容和内容地址之间找到一种映射关系,并不能够反推,从而达到加密。

    2.MD5信息摘要算法,一种被广泛使用的密码杂凑函数。可以产生出一个128位的散列值,用于确保信息传输完整一致。

    MD5功能:

    输入任意长度的信息,通过MD5都会将其转化成一个128bit的信息(数字指纹)hash的是19个数字,152bit。MD5加密的是16个数字,128位。

    不同的输入得到不同的结果。

    >>> import hashlib
    >>> dir(hashlib)
    ['__all__', '__builtin_constructor_cache', '__builtins__', '__cached__', '__doc__', '__file__', '__get_builtin_constructor', '__loader__', '__name__', '__package__', '__spec__', '_hashlib', 'algorithms_available', 'algorithms_guaranteed', 'blake2b', 'blake2s', 'md5', 'new', 'pbkdf2_hmac', 'sha1', 'sha224', 'sha256', 'sha384', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'sha512', 'shake_128', 'shake_256']
    >>> m = hashlib.md5()                      # m是一个接收参数的对象。
    >>> m.update(b'dapeng')                     # 接受的参数钱加b,表示以二进制方式读取。
    >>> m.hexdigest()                         # 十六进制
    '210ed3cf9a0ea07ae04e781fe424c087'
    

    3.MD5算法特点

    ①﹐压缩性:任意长度信息算出MD5值的长度都是固定的,都是16位,128个字节。

    ②﹑容易计算。从原数据计算出MD5值很方便。

    ③  抗修改性。对原数据进行1个字节的修改,MD5值都会发生很大的变化。

    ④ 强抗碰撞. 想找一个原数据的MD5值,几乎是不可能的,很难。

    4.MD5算法的可逆性

    MD5算法是不可逆的。因为在转化为MD5值的时候,原数据的部分信息是丢失的。

    5.MD5的用途

    文件在传输前会得到以恶搞MD5值,接收文件后得到的MD5值和传输前的比较,不一样则文件被修改过。

    经常会看到一些文件提供下载会公布MD5值,就是因为如此,因为有的下载文件会被人传入病毒。

    防止明文被看到

    一些社交,需要支付的网站保存用户的密码,密码存放在数据库里,是以MD5值存放,工作人员看不到。

    用户输入密码时会转化成MD5值,和数据库里的mD5值做比较,如果相等则验证成功。

    既然MD5是不可逆的?网上存在的解密工具到底有什么意义?

    输入一些简单的MD5值到网上的解密工具,真的能把你的信息显示出来,大吃一惊。

    原来,网站的人员用一些程序24h在跑MD5值,并且创建了一个库,里面存放着MD5值和铭文相对应的关系。你输入MD5值,他会在库里找,并不是真的破解。

    所以,密码得有多复杂就多复杂,很危险。简称撞库。

    数字签名

    需要第三方机构认证。比如一个人签订一份合同,第三方通过MD5算法生成一个MD5值。如果以后这个人反口否认合同是他写的,可以把合同新生成一个MD5值和以前的MD5值比较,相同则此人说谎,这就是数字签名。

      

  • 相关阅读:
    高德地图修改背景色
    shell程序的编写
    WPF程序,运行时,结束时,要运行的操作(自动保存,检查单程序)
    android EditText光标位置(定位到最后)
    字体结构的Baseline/Leading/Ascent/Descent的图示
    Java解析xml(转)
    python常用抽象基类1
    airflow之SubDAGs(转载)
    java解析xml(转)
    python内部类
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8875638.html
Copyright © 2011-2022 走看看