Hashlib 和 hmac 模块 | 学习笔记

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 快速学习 Hashlib 和 hmac 模块

开发者学堂课程【Python 入门 2020年版:Hashlib 和 hmac 模块】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10360


Hashlib 和 hmac 模块

目录

一,hashlib 模块的应用

二,hmac 模块的应用

 

一,hashlib 模块的应用

hashlib 是一个提供字符加密功能的模块,包含 Md5 和 Sha 的加密算法,具体支持 md5sha1sha224 sha256sha384sha512 等算法。

该模块在用户登录认证方面应用广泛,对文本加密也很常见。这两个模块都是用来加密的。import hashlib 和 import hmac

import hashlib

1.hashlib 模块主要支持两个算法

(1).支持 Md5 和 ShA 的加密算法

(2).加密方式:具体有单向加密,对称加密,非对称加密。Md5 和 ShA 是为单向加密,单向加密只能加密,不解密。

非对称加密有 rsa

举例为hashlib.md5().update(‘abc’),进行加密,加密后为 x=hashlib.md5().update(‘abc’)

2. 需要将加密的对象是需要转换成二进制

举例来说明

(1).第一步,生成一个 md5 对象 x=hashlib.md5()

(2).第二步为 x.update(‘abc’encode(‘utf8’)

(3).第三步为 print(x.hexdigest()) 结果为十六进制的数字。

(4)由此可见,abc’-900150983cd24fb0d6963f7d28e17f72。Md5 是可以被破解的。但是复杂的密码是算不出来的。

‘abc’-900150983cd24fb0d6963f7d28e17f72的过程是单向的。可以从 ‘abc’导出900150983cd24fb0d6963f7d28e17f72,原则上是不可以从900150983cd24fb0d6963f7d28e17f72导出‘abc’。但是实际上900150983cd24fb0d6963f7d28e17f72 是可以导出 ‘abc’ 的。

因为  ‘abc’ 的结果会一直是

900150983cd24fb0d6963f7d28e17f72。

也就是说虽然 900150983cd24fb0d6963f7d28e17f72 算不回来 ‘abc’,但是看到 900150983cd24fb0d6963f7d28e17f72 就可以知道对应的是 ‘abc’。

(5).再次验证可以拿 900150983cd24fb0d6963f7d28e17f72 的值在 md5 验证,验证后的结果会出来 ‘abc’。但是,复杂的密码是解不出来的,并不是都可以被解密。

(6).由于算不出来,可以取一个方法为在 excel 里做一个表格,首行设置明文和密闻,明文为 ‘abc’ 时,

密闻输入 900150983cd24fb0d6963f7d28e17f72。之后再运行,举例 ‘hello’,这时明文设置 ‘hello’,密闻设置为对应的 5d41402abc4b2a76b9719d911017c592.

(7).注意,每一次算法的结果不是随机的,是固定的。

3. 文件的 md5

主要为下载的时候所被运用到,以下为举例

(1) .下载 pycharm,这时会看到,Your download shoul d start shortly.

lf it doesn t, please use direct link Download and verify the file's SHA-256 checksum Third-party software used by pyCharm Professional Edition,它们其实都是加密算法。

(2) .拿了 pycharm 后比如有 25.3M,如果需要下载,客户端需要把文件下载下来,下载受限于网速,下载的方式也有很多,比如迅雷,它是从各个资源上拿一点来所运行,这也说明如果下载的人越多,它是越快的。它是一点点拼,之后下载到个人的电脑上。

(3) .为了避免下载的过程中被别人篡改以及文件的损坏,会在下载之前计算文件的 md5 和 sha,如果与本人电脑中的 md5 和 sha 是一样的,是说明正确的。

注意,就算有一点差别,也会造成很大的差别。

此图为以上说明下载 pycharm 的图片解释图:

image.png

4. 除此之外,也有很多 hashlib 的算法,例如:

(1).h1 = hashlib.sha1('123456'.encode())

print(h1.hexdigest()) 的结果为

#7c4a8d09ca3762af61e59520943dc26494f8941b

(2).h2 = hashlib.sha224('123456'.encode())

print(h2.hexdigest()) 的结果为

#f8cdb04495ded47615258f9dc6a3f4707fd2405434fefc3cbf4ef4e6

举例说明为什么是 224,

①.x=f8cdb04495ded47615258f9dc6a3f4707fd2405434fefc3cbf4ef4e6,

②.输入 len(x) ,算出 56。第三步,算出 224/56 等于 4.0。224 也就是指位数,一个十六进制占 4 位。

其实在加密过程中 sha224 是够用的,是比较安全的。所以最推荐使用 sha224 加密。

(3).h3 = hashlib.sha256('123456'.encode()

print(h3.hexdigest()) 的结果为

#8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

(4).h4 hashlib.sha384('123456'.encode())

print(h4.hexdigest()) 的结果为#0a989ebc4a77b56a6e2bb7b19d995d185ce44090c13e2984b7ecc6d446d4b61ea9991b76a4c2f04b1b4d24484144945

 

二,hmac 模块的应用

HMAC 算法也是一种一种单项加密算法,并且它是基于上面各种哈希算法/散列算法的,只是它可以在运算过程中使用一个密钥来增增强安全性 hmac 模块实现了 HAMC 算法,提供了相应的函数和方法,且与 hashlib 提供的 api 基本一致。

Import hmac

1.hmac 加密可以指定秘钥

h=hmac.new("h'.encode(),你好'.encode())

这是说明 h 是秘钥,是使用 h 对‘你好’进行加秘钥。

result=hhexdigest()

2.print(result)  

获取加密后的结果。

相关文章
|
数据安全/隐私保护 Python
Python hashlib 加密方法(MD5、SHA1、SHA256、SHA52)
Python hashlib 加密方法(MD5、SHA1、SHA256、SHA52)
348 0
|
1月前
|
算法 安全 数据安全/隐私保护
hashlib和hmac模块的应用
hashlib和hmac模块的应用
|
3月前
|
JavaScript 算法 前端开发
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
国标哈希算法基础:SHA1、SHA256、SHA512、MD5 和 HMAC,Python和JS实现、加盐、算法魔改
513 1
|
6月前
|
存储 算法 安全
Python的hashlib模块:7种加密算法深入剖析
Python的hashlib模块:7种加密算法深入剖析
384 0
|
存储 算法 安全
hashlib模块
hashlib模块
74 0
|
Go 数据安全/隐私保护
Golang:使用标准库crypto/aes实现AES加密和解密
Golang:使用标准库crypto/aes实现AES加密和解密
945 0
|
JavaScript 算法 安全
JS常见加密 AES、DES、RSA、MD5、SHAI、HMAC、Base64 - Python/JS实现
本文仅仅介绍了常见的一些JS加密,并记录了JS和Python的实现方式 常见的加密算法基本分为这几类: (1)base64编码伪加密 (2)线性散列算法(签名算法)MD5 (3)安全哈希算法 SHAI (4)散列消息鉴别码 HMAC (5)对称性加密算法 AES,DES (6)非对称性加密算法 RSA
667 0
JS常见加密 AES、DES、RSA、MD5、SHAI、HMAC、Base64 - Python/JS实现
|
存储 算法 安全
hashlib模块初识
hashlib模块初识