我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python中hash加密方法怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python中hash加密方法怎么使用

这篇文章主要介绍“Python中hash加密方法怎么使用”,在日常操作中,相信很多人在Python中hash加密方法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中hash加密方法怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    简介

    概念

    散列算法(Hash Algorithm),又称哈希算法,杂凑算法,是一种从任意文件中创造小的数字「指纹」的方法。与指纹一样,散列算法就是一种以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。因此,当原有文件发生改变时,其标志值也会发生改变,从而告诉文件使用者当前的文件已经不是你所需求的文件

    Hash简单点讲就是把任意一段数据经过某种算法生成一段唯一的固定长度的数据

    也可以把哈希值当做是文件指纹,因为它是文件唯一性的标志,与每一个字节都有关,当文件发生改变是,指纹值也会改变

    1. 如果把hash算法比喻为一座工厂

    2. 那传给hash算法的内容就是原材料

    3. 生成的hash值就是生产出的产品

    特点

    • 正向快速:给定明文和 Hash 算法,在有限时间和有限资源内能计算得到 Hash 值

    只要传入的内容一样,得到的hash值必然一样

    • 逆向困难:给定 Hash 值,在有限时间内很难逆推出明文

    • 输入敏感:原始输入信息发生任何变化,新的 Hash 值都应该出现很大变化

    • 冲突避免:很难找到两段内容不同的明文,使得它们的 Hash 值一致

    • 长度固定:只要我们使用是hash算法固定,无论传入的内容有多大,得到的hash值的长度是固定

    • 信息摘要:hash只是信息的摘要,信息指纹,是用来做数据识别的

    hash有哪些

    常见 Hash 算法有 MD5 和 SHA 系列,目前 MD5 和 SHA1 已经被破解,一般推荐至少使用 SHA2-256 算法

    哈希算法输出长度(bit)输出长度(字节)
    MD5128 bit16 bytes
    RipeMD160160 bits20 bytes
    SHA-1160 bits20 bytes
    SHA-256256 bits32 bytes
    SHA-512512 bits64 bytes

    算法碰撞

    稍微想一下就可以发现,既然输入数据长度不固定,而输出的哈希值却是固定长度的,这意味着哈希值是一个有限集合,而输入数据则可以是无穷多个,那么建立一对一关系明显是不现实的。所以“碰撞”是必然会发生的,所以一个成熟的哈希算法会有较好的抗冲突性,同时在实现哈希表的结构时也要考虑到哈希冲突的问题

    • 比如“666”经过 Hash 后是“fae0b27c451c728867a567e8c1bb4e53”,相同 Hash 算法得到的值是一样的。比如 WiFi 密码如果是 8 位纯数字的话,顶多就是 99999999 种可能性,破解这个密码需要做的就是提前生成好 0 到 1 亿数字的 Hash 值,然后做 1 亿次布尔运算(就是 Bool 值判断,0 或者 1),而现在普通 I5 四核 CPU 每秒能到达 200 亿次浮点数计算,做 1 亿次布尔运算也就是秒级别的时间就破解了

    • 8位大小写字母、数字、特殊符号组成的密码,若按照MD5加密,则hash值大概10000千亿,i9算力每秒1千亿。也需要至少24h。这只是极端情况下,如果加上加密算法不确定(比如3),请求时间(比如3),查询时间(比如3),这就已经需要半年左右,倘若再加上错误等待时间(比如输入5次错误等待24小时),那就已经需要50年。。。

    当然,如果有三万台电脑同时破解,也还是一天 -_-|||。
    不过道高一尺,魔高一丈。谁又会傻乎乎的一个站着打一个等着挨。都是相对的

    所以密码尽量不要用纯数字,因为根本没有任何安全性

    加盐防碰撞

    对数字内容进行 Hash 运算,获取唯一的摘要值来指代原始完整的数字内容,利用 Hash 函数的抗碰撞性来确保内容未被篡改

    常用于用户名和密码来确保用户信息安全,为了防止攻击会采用加盐的方法,就是原来的明文加上一个随机数之后的 Hash 值,Hash 值和盐会保存在两个地方,只要不是同时泄漏就很难被破解

    加密

    如果在Python中需要对用户输入的密码或者其他内容进行加密,首选的方法是生成hash值

    在Python中可以利用二个模块来进行:

    • crypth

    • ashlib

    hashlib

    主要方法

    使用:hashlib.md5()

    名称描述
    md5(…)利用md5算法加密
    sha1(…)利用sha1算法加密
    sha224(…)利用sha224算法加密
    sha256(…)利用sha256算法加密
    sha384(…)利用sha384算法加密
    sha512(…)利用sha512算法加密
    特有方法

    如果你利用hashlib生成了一个Hash对象,那么这个Hash对象会包含如下方法

    名称描述
    update(arg)可以重复利用指定了特殊加密算法的Hash对象,对arg进行加密
    digest(…)以字符形式返回加密内容
    hexdigest(…)以16进制形式返回加密内容
    copy(…)为了达到重复利用Hash对象的目的,而克隆Hash对象
    使用方法

    直接使用hashlib方法

    import hashlib hashlib.sha224("Nobody inspects the spammish repetition".encode("utf-8"))  # 加密hashlib.sha224("Nobody inspects the spammish repetition".encode("utf-8")).hexdigest()  # 返回加密内容

    直接使用Hash对象中的方法

    import hashlib # 造出工厂m = hashlib.md5()# 放入原料m.update("Nobody inspects".encode('utf-8'))# 产出hash值m.digest() m.update("the spammish repetition".encode("utf-8"))m.digest()m.hexdigest()
    加盐
    import hashlib # 造出工厂m = hashlib.md5("this is salt".encode("utf-8"))# 放入原料m.update("Nobody inspects".encode('utf-8'))# 产出hash值m.digest() m.update("the spammish repetition".encode("utf-8"))m.digest()m.hexdigest()

    crypt

    主要方法

    名称类型描述
    crypt(…)方法对指定内容进行hash加密
    mksalt(…)方法根据加密算法生成salt
    methodslist返回可用加密算法的列表
    MOTHOD_CRYPT常量加密算法
    METHOD_MD5常量md5加密算法
    METHOD_SHA256常量sha256加密算法
    METHOD_SHA512常量sha512加密算法
    使用说明

    使用crypt.crypt(…)进行hash加密的时候,需要提供二个参数:

    • 加密内容

    • salt

    import crypt salt = crypt.mksalt(crypt.METHOD_SHA512)hash = crypt.crypt("helloworld",salt)

    应用

    密码加密

    m=hashlib.md5() m.update('key'.encode('utf-8'))      #添加个其他元素,提升密码复杂度,不是加盐m.update(password.encode('utf-8'))print(m.hexdigest())

    应用一致性校验

    m = hashlib.md5()with open(r'E:\01.mp4','rb') as f:    for line in f:          m.update(line)        print(m.hexdigest)

    到此,关于“Python中hash加密方法怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Python中hash加密方法怎么使用

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Python中hash加密方法怎么使用

    这篇文章主要介绍“Python中hash加密方法怎么使用”,在日常操作中,相信很多人在Python中hash加密方法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中hash加密方法怎么使用
    2023-06-28

    python加密解密算法怎么使用

    Python提供了多种加密解密算法的库,比如`hashlib`、`hmac`、`base64`、`cryptography`等。下面是一个例子,演示了如何使用`cryptography`库中的AES对称加密解密算法进行加密解密:```pyt
    2023-09-17

    怎么使用python中的pycrypto算法加密

    今天小编给大家分享一下怎么使用python中的pycrypto算法加密的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、安装
    2023-06-30

    Python中怎么加密密码

    今天就跟大家聊聊有关Python中怎么加密密码,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。如何在Python中加密密码加密密码会将密码编码为随机字符序列。使用base64.b64e
    2023-06-16

    android中AES加解密的使用方法

    今天在android项目中使用AES对数据进行加解密,遇到了很多问题,网上也找了很多资料,也不行。不过最后还是让我给搞出来了,这里把这个记录下来,不要让别人走我的弯路,因为网上绝大多数的例子都是行不通的。好了,接下来开始讲解 1、Aes工具
    2022-06-06

    怎么使用python实现md5加密

    本文小编为大家详细介绍“怎么使用python实现md5加密”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用python实现md5加密”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。python实现MD5加密
    2023-07-06

    javascript中能够使用什么方法进行加密

    小编给大家分享一下javascript中能够使用什么方法进行加密,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java有哪些集合类Java中的集合主要分为四类:1
    2023-06-14

    PHP怎么使用OpenSSL加密中的非对称加密

    这篇文章主要介绍了PHP怎么使用OpenSSL加密中的非对称加密,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP的OpenSSL加密扩展学习:非对称加密生成私钥通过之前的
    2023-06-15

    PHP7中使用“DES-EDE-CBC”加解密的方法

    这篇文章主要介绍PHP7中使用“DES-EDE-CBC”加解密的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 条件约束之前PHP5上常使用的mcrypt库在PHP7.1+上已经被移除,故我们采用openss
    2023-06-15

    python中csv.DictReader()方法怎么使用

    本篇内容介绍了“python中csv.DictReader()方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简单使用csv.Di
    2023-07-02

    php混淆加密算法怎么使用

    PHP混淆加密算法可用于保护源代码的安全性,防止代码被解析和修改。以下是一个使用PHP混淆加密算法的示例:1. 在开始之前,你需要安装一个PHP混淆加密工具,比如ionCube或Zend Guard。这些工具会将你的PHP源代码编译成一个加
    2023-09-14

    win7u盘加密功能使用方法

    小巧的U盘是很多朋友的首选移动存储设备,但是正因为体积小巧,U盘也非常容易丢失,里面存放的重要数据和信息也很可能因此被泄露。使用加密软件虽然可以起到保护作用,却比较麻烦。这个问题也曾经困扰了小编好长时间,开始使用Windows 7后,发现W
    2023-05-26

    用Python模拟网站中对JavaScript加密的方法

    这篇文章主要介绍“用Python模拟网站中对JavaScript加密的方法”,在日常操作中,相信很多人在用Python模拟网站中对JavaScript加密的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”用
    2023-06-17

    怎么使用python append()方法添加文件夹

    Python的append()方法用于在列表末尾添加元素,而不是用于添加文件夹。要添加文件夹,可以使用os.mkdir()方法来创建新的文件夹。以下是使用os.mkdir()方法添加文件夹的示例代码:pythonimport os# 指定文
    2023-10-18

    Python使用Pycrypto库进行RSA加密的方法详解

    密码与通信 密码技术是一门历史悠久的技术。信息传播离不开加密与解密。密码技术的用途主要源于两个方面,加密/解密和签名/验签 在信息传播中,通常有发送者,接受者和窃听者三个角色。假设发送者Master想要写信给接受者Ghost,可是又不想信的
    2022-06-04

    使用python加密主机文件几种方法实现

    本文主要介绍了使用python加密主机文件几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-09

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录