zoukankan      html  css  js  c++  java
  • python-hash和md5算法

    一、HASH

      HASH——‘哈希’,输入任意长度的值,生成固定长度的散列值。

      注意:hash所生成的值在python程序本次运算时一直,下次程序运算时会生成另一个hash值。

    二、MD5

      MD5信息摘要算法

    2.1功能:

           1、输入任意长度,经过算法,输出128位固定长度的值(数字指纹)。

      2、不同的输入,得到不同的结果(唯一性)

    2.2特点:

      1、压缩性:输入任意,MD5值长度固定

      2、容易计算:原始数据很容易就能算出MD5的值。

      3、抗修改:修改了一点点,所算出MD5值差别很大。

      4、强碰撞:已知一个MD5值,想通过另一个值算出相同的值很难。

    2.3是否可逆?

      MD5是基于hash算法,在计算过程中原文数据就丢失了,所以不可逆。

    2.4有什么用途?

      1.防止被篡改

      2.防止看到明文

      3.数字签名

    # @File    : 4.10.hash加密算法.py
    # @Software: PyCharm
    
    import hashlib
    
    # 1.将字符串,通过加密算法,变成固定长度的输出
    s = 'abc'
    print(len(str(hash(s)))*4, hash(s))
    
    # 2.生成md5数字指纹。
    # 第1种写法:
    s2 = b'!@abc'  # 定义字节型字符串
    md = hashlib.md5()  # 导入md5算法
    md.update(s2)  # 把值传给md5算法
    
    print(md.digest())  # 生成一个128位的2进制数
    print('MD5', '长度:', len(md.hexdigest())*4, md.hexdigest())
    # 第2种写法:
    print(hashlib.md5("!@abc".encode("utf-8")).hexdigest())
    
    # 3.SHA-1
    
    hash = hashlib.sha1()
    hash.update('admin'.encode('utf-8'))
    print('SHA-1', '长度:', len(hash.hexdigest())*4, hash.hexdigest())
    
    # 4.SHA-256
    
    hash = hashlib.sha256()
    hash.update('admin'.encode('utf-8'))
    print('SHA-256', '长度:', len(hash.hexdigest())*4, hash.hexdigest())
    
    # 5.SHA-384
    
    hash = hashlib.sha384()
    hash.update('admin'.encode('utf-8'))
    print('SHA-384', '长度:', len(hash.hexdigest())*4, hash.hexdigest())
    
    # 5.SHA-512
    
    hash = hashlib.sha512()
    hash.update('admin'.encode('utf-8'))
    print('SHA-384', '长度:', len(hash.hexdigest())*4, hash.hexdigest())
  • 相关阅读:
    CATransform3D中m34字段的取值含义
    iOS模拟器分辨率的问题(转载)
    优秀iOS学习网站(待更新)
    内联函数的理解
    UIView的setNeedsLayout, layoutIfNeeded 和 layoutSubviews 方法之间的关系解释
    Flume基础学习
    2019年总结
    Linux基础学习
    Mysql中几种sql的常见用法
    各种设计模式的简单介绍
  • 原文地址:https://www.cnblogs.com/AYxing/p/8679334.html
Copyright © 2011-2022 走看看