IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python hashlib模块--学习笔记 -> 正文阅读

[Python知识库]python hashlib模块--学习笔记

python hashlib模块--学习笔记

目录

简介:

主要用途:

用于用户登陆口令存储

应用代码示例及原码学习

import hashlibimport ospassword = "abcdefghijk".encode("utf-8")salt = os.urandom(32)print(salt)# >>b']\xd6B6\x083\x81\xf6\x8a\t\xfb\x05\xcdDI\xbd\x84y>&\x80b\x9cg\xbfwT~\xa1\x84N\x9d'md5 = hashlib.md5()md5.update(password+salt)print(md5.hexdigest())# >>99edc107e9b480421d4ebd19f0f8b9bd


简介:

Python内置的hashlib模块为我们提供了多种安全方便的摘要方法,如MD5,SHA1等,通俗的理解MD5算法,输入任意长度的数据,输出为固定长度的数据串(数字通常是16进制)很重要的一点:哈希算法是一个单向函数,无法反推(但也不是绝对的)在大部分操作系统下,hashlib模块支持md5(),sha1(), sha224(), sha256(), sha384(), sha512(), blake2b(),blake2s(),sha3_224(), sha3_256(), sha3_384(), sha3_512(), shake_128(), shake_256()等多种hash构造方法。这些构造方法在使用上通用,返回带有同样接口的hash对象,对算法的选择,差别只在于构造方法的选择。例如sha1()能创建一个SHA-1对象,sha256()能创建一个SHA-256对象。然后就可以使用通用的update()方法将bytes类型的数据添加到对象里,最后通过digest()或者hexdigest()方法获得当前的摘要。

# This tuple and __get_builtin_constructor() must be modified if a new
# always available algorithm is added.
__always_supported = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',
                      'blake2b', 'blake2s',
                      'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512',
                      'shake_128', 'shake_256')

主要用途:

  • 可以判断一段数据是否被篡改
  • 用于网站登陆用户口令的存储

用于用户登陆口令存储

对于用户来说一般登陆网站或者应用都是有登陆账号和密码的.我们一般的做法都是会将这些口令数据映射起来存储到数据库中,用户登录需要使用密码,密码一定要加密,保证用户的信息安全。当用户登录时,首先计算用户输入的明文口令的摘要值,然后和数据库存储的摘要值进行对比。如果两者一致,说明口令输入正确,如果不一致,口令肯定错误。这样,不但数据库不用储存明文密码,即使能访问数据库的管理员“叛变”了,盗走了整个数据库,也无法获知用户的明文口令。
  1)加密可以使用hashlib模块进行加密。
  2)加密可以写成加密函数,方便多处调用
  3)提高密码解密的复杂性,代码中多加字符串。(加密算法虽然依然非常厉害,但是也存在缺陷,即:通过撞库可以反解。所以,有必要对加密密码进行加盐。)

应用代码示例及原码学习


???????import hashlib
import os
password = "abcdefghijk".encode("utf-8")
salt = os.urandom(32)
print(salt)
# >>b']\xd6B6\x083\x81\xf6\x8a\t\xfb\x05\xcdDI\xbd\x84y>&\x80b\x9cg\xbfwT~\xa1\x84N\x9d'
md5 = hashlib.md5()
md5.update(password+salt)
print(md5.hexdigest())
# >>99edc107e9b480421d4ebd19f0f8b9bd

def __hash_new(name, data=b'', **kwargs):
    """new(name, data=b'') - Return a new hashing object using the named algorithm;
    optionally initialized with data (which must be a bytes-like object).
    """
    if name in {'blake2b', 'blake2s'}:
        # Prefer our blake2 implementation.
        # OpenSSL 1.1.0 comes with a limited implementation of blake2b/s.
        # It does neither support keyed blake2 nor advanced features like
        # salt, personal, tree hashing or SSE.
        return __get_builtin_constructor(name)(data, **kwargs)
    try:
        return _hashlib.new(name, data)
    except ValueError:
        # If the _hashlib module (OpenSSL) doesn't support the named
        # hash, try using our builtin implementations.
        # This allows for SHA224/256 and SHA384/512 support even though
        # the OpenSSL library prior to 0.9.8 doesn't provide them.
        return __get_builtin_constructor(name)(data)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 10:49:32  更:2022-04-23 10:50:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:38:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码