一、介绍

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

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

- crypt

- hashlib

二、crypt

(一)crypt的主要方法和常量

名称

描述

md5(…)

利用md5算法加密

sha1(…)

利用sha1算法加密

sha224(…)

利用sha224算法加密

sha256(…)

利用sha256算法加密

sha384(…)

利用sha384算法加密

sha512(…)

利用sha512算法加密

(二)使用说明与示例

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

- 加密内容

- salt

如果不特别指定salt,系统就会调用crypt.mksalt(…)生成一个salt

如果想要以特定的加密算法生成salt就应该使用下面的命令:

>>>salt = crypt.mksalt(crypt.METHOD_SHA512)

>>> salt

'$6$s8Q3eNP6urKZb3AK'

然后再进行数据加密:

>>> hash = crypt.crypt("helloworld",salt)

>>> hash

'$6$s8Q3eNP6urKZb3AK$L0O5cqHRU.1f170bV2KrjF3LkLL54So442TqUIsk.wYtCtOSD4Tyt./fj6W6Y.EzrbNm00grA4yPPhXGya2ie1'

三、hashlib

(一)hashlib的主要方法和常量

名称

描述

md5(…)

利用md5算法加密

sha1(…)

利用sha1算法加密

sha224(…)

利用sha224算法加密

sha256(…)

利用sha256算法加密

sha384(…)

利用sha384算法加密

sha512(…)

利用sha512算法加密

**(二)Hash对象特有的方法

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

名称

描述

update(arg)

可以重复利用指定了特殊加密算法的Hash对象,对 arg 进行加密

digest(…)

以字符形式返回加密内容

hexdigest(…)

以16进制形式返回加密内容

copy(…)

为了达到重复利用Hash对象的目的,而克隆Hash对象

(三)示例

1、直接使用hashlib方法

>>> hashlib.sha224("Nobody inspects the spammish repetition")

>>> hashlib.sha224("Nobody inspects the spammish repetition").hexdigest()

'a4337bc45a8fc544c03f52dc550cd6e1e87021bc896588bd79e901e2'

2、直接使用Hash对象中的方法

>>> m = hashlib.md5()

>>> m

>>> m.update("Nobody inspects")

>>> m.digest()

'>\xf7)\xcc\xf0\xccV\x07\x9c\xa5F\xd5\x80\x83\xdc\x12'

>>> m.update(" the spammish repetition")

>>> m.digest()

'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'

>>> m.hexdigest()

'bb649c83dd1ea5c9d9dec9a18df0ffe9'

我是如何 Python 一句话校验软件哈希值的

MD5

python -c "import hashlib,sys;print hashlib.md5(open(sys.argv[1],'rb').read()).hexdigest()" Shadowsocks.exe

校验 下载软件是否被“中间人动过手脚”

例如:校验shadowsocks

SHA-1

python -c "import hashlib,sys;print hashlib.sha1(open(sys.argv[1],'rb').read()).hexdigest()" Shadowsocks.exe

SHA-256

python -c "import hashlib,sys;print hashlib.sha256(open(sys.argv[1],'rb').read()).hexdigest()" Shadowsocks.exe

SHA-512

python -c "import hashlib,sys;print hashlib.sha512(open(sys.argv[1],'rb').read()).hexdigest()" Shadowsocks.exe

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

python中哈希是什么意思_利用Python如何生成hash值示例详解相关推荐

  1. 在python中股票的收盘价如何表示_利用python计算股票涨跌幅

    作为一个python新手,在学习中遇到很多问题,要善于运用各种方法.今天,在学习中,碰到了如何通过收盘价计算股票的涨跌幅. 第一种: 读取数据并建立函数: import numpy as np imp ...

  2. python中哈希是什么意思_在python中向量化特征哈希

    您可以使用带权重的bincount来执行您要求的操作: >>> np.bincount(h,weights=x) array([ 10., 5., 10., 10., 6.]) 对于 ...

  3. python中颜色介意用数字表示_利用Python实现颜色色值转换的小工具

    先看看Zeplin 的颜色色值显示示例 原有处理方式 因为我会 Python (仅限于终端输入 python 然后当做计算器算,或者用 hex() 函数把十进制转换成十六进制),所以遇到这样的问题我当 ...

  4. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

  5. python中导入模块使用哪个关键字_关于python导入模块的关键字介绍

    关于python导入模块的关键字介绍 发布时间:2020-04-17 10:13:26 来源:亿速云 阅读:101 作者:小新 今天小编给大家分享的是关于python导入模块的关键字介绍,很多人都不太 ...

  6. 在python中print表示的数据类型是_【Python连载】那些必须掌握的Python数据类型

    原标题:[Python连载]那些必须掌握的Python数据类型 经过近几年的发展,Python已成为了数据科学和机器学习的首选语言,许多人也因此开始走上自学python之路.从今天开始,本公众号将陆续 ...

  7. 在python中定义类时、运算符重载_自定义 Python 类中的运算符和函数重载(上)...

    如果你对 Python 中的str对象使用过 + 或 * 运算符,你一定注意到了它的操作与 int 或 float 类型的区别: 你可能想知道同一内置运算符或函数如何对不同类对象进行不同操作的.这分别 ...

  8. python中对象和变量的关系_浅析python中的类变量和对象变量

    刚学python,学到了有关于类和对象的地方.对一个概念有点模糊,后来通过实践编码找到一定规律 在python中 class test(object): id=2 name='tt' list=['t ...

  9. python中变量和函数的区别_关于python中带下划线的变量和函数 的意义

    Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...

  10. python中对象的概念是什么_简述Python中的面向对象编程的概念

    面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...

最新文章

  1. devc 能优化吗_SEO关键词推广要多少钱?关键词优化选择外包靠谱吗?
  2. 公司网络推广浅析网站想要“久居”首页的方法有哪些?
  3. excel中如何将时间戳转换为日期格式
  4. 【Nginx】 Nginx实现端口转发
  5. 一次Maven依赖冲突采坑,把依赖调解、类加载彻底整明白了
  6. 分布式 开源_3个开源分布式跟踪工具
  7. list 增 删 改 查 及 公共方法
  8. 很遗憾AI还不能审查出儿童性侵录像:沙漠也被当成小黄片
  9. 限制上传文件为jpg文件
  10. overflow鼠标拖拽显示_[翻译] 从零开始的 .Net Shell 扩展教程 (四) - Shell 拖拽处理程序
  11. 十三届蓝桥杯国赛 内存空间 python 满分答案
  12. Aliplayer视频点播加密播放
  13. HCIA RS题库及解析(2018版)
  14. 银行项目企业网银转账对私转账功能的测试点
  15. PhpStorm修改字体和主题
  16. 关于YOLOV4的一些技巧
  17. 乐理分析笔记(二) 莫扎特 土耳其进行曲
  18. java 邮件 客户端_JAVA编写ESMTP客户端发送邮件代码
  19. TongWeb上传文件功能介绍
  20. 微信公众平台开发之模板消息(Java)

热门文章

  1. 关于Qt bindValue函数出错问题
  2. STM32G030C8T6读写flash
  3. API网关——zuul
  4. DRM破解再升级 支持新版WM11
  5. 微信支付服务商接入指引
  6. 计算机网络中rtd,一文了解Modern Standby与RTD3
  7. 基于python实现检索标记敏感词并输出
  8. 图灵奖Alan Kay:突破常规思维!道翰天琼认知智能机器人平台API接口大脑为您揭秘
  9. 再读王垠的《编程的智慧》,有怎样的感想?
  10. Moss 2007 入门(1) - 功能概述