Python加密与解密模块hashlib与hmac

yizhihongxing

Python加密模块hashlib与hmac完整攻略

什么是哈希加密

哈希加密是一种单向加密方式,它通常将任意长度的消息(明文)压缩到一个固定长度(密文)的散列值上,该散列值也称为哈希值。

Python中的hashlib模块提供了很多不同的哈希算法,例如MD5、SHA1、SHA224、SHA256,SHA384和SHA512。这些哈希算法都使用相同的接口,在使用过程中非常方便。

hashlib模块的使用

MD5加密

MD5是哈希算法中简单且普及的一种,可以用于生成符合RFC1321标准的消息摘要。使用hashlib模块可以很容易地对一段字符串进行MD5加密。

import hashlib

def md5_encrypt(message):
    md5 = hashlib.md5()
    md5.update(message.encode('utf-8'))
    return md5.hexdigest()

示例:

>>> message = 'Hello World!'
>>> md5_encrypt(message)
'ed076287532e86365e841e92bfc50d8c'

SHA1加密

SHA-1加密算法是一种CryptographySecurity(密码学安全)哈希函数,它能将任意长度的字符串数据转换为一个固定大小(20字节)的哈希值。由于目前SHA-1已经被证明存在安全性问题,因此使用时需要格外小心。

import hashlib

def sha1_encrypt(message):
    sha1 = hashlib.sha1()
    sha1.update(message.encode('utf-8'))
    return sha1.hexdigest()

示例:

>>> message = 'Hello World!'
>>> sha1_encrypt(message)
'0a4d55a8d778e5022fab701977c5d840bbc486d0'

SHA256加密

SHA-256是一种SHA-2哈希算法的变种,其摘要长度为32字节。

import hashlib

def sha256_encrypt(message):
    sha256 = hashlib.sha256()
    sha256.update(message.encode('utf-8'))
    return sha256.hexdigest()

示例:

>>> message = 'Hello World!'
>>> sha256_encrypt(message)
'9527ee6997c3059d2a2299b87b12e3f6b9d4f8d28ae9102f29e9193d1f6b1778'

hmac模块的使用

HMAC(Hash-based Message Authentication Code)算法基于哈希函数和密钥计算摘要,用于验证消息的完整性和真实性。Python中的hmac模块提供了hmac()函数,可以方便地实现HMAC算法。

HMAC-SHA256加密

import hmac
import hashlib

def hmac_sha256_encrypt(key, message):
    h = hmac.new(key.encode('utf-8'), message.encode('utf-8'), hashlib.sha256)
    return h.hexdigest()

示例:

>>> secret_key = '0123456789abcdefghijklmnopqrstuvwxyz'
>>> message = 'Hello World!'
>>> hmac_sha256_encrypt(secret_key, message)
'bd90db2314ebc7bb3a02af3c8e748c6069b2b8ae5d49ffacee7f0d295791c3be'

HMAC-MD5加密

import hmac
import hashlib

def hmac_md5_encrypt(key, message):
    h = hmac.new(key.encode('utf-8'), message.encode('utf-8'), hashlib.md5)
    return h.hexdigest()

示例:

>>> secret_key = '0123456789abcdefghijklmnopqrstuvwxyz'
>>> message = 'Hello World!'
>>> hmac_md5_encrypt(secret_key, message)
'52a7eca4ceea1a86f5333e82941e4814'

总结

以上就是Python中哈希加密以及HMAC算法的介绍,不同的加密算法在实际应用中需要根据具体情况进行选择。在编写代码时,加密过程中的问题需要及时发现并解决,在写出健壮的加密程序之前,需要进行多方面的测试和验证。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python加密与解密模块hashlib与hmac - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • Python实现获取照片的地理定位信息

    获取照片的地理定位信息是一项很有用的功能,可以让我们了解在拍摄照片时的拍摄位置,下面为您提供Python实现获取照片的地理定位信息的攻略。 1. 安装必要的Python库 首先,需要安装Pillow和PIL.ExifTags两个Python库,它们用于读取照片的EXIF信息,其中包含了拍摄照片的经纬度、海拔等信息。 pip install Pillow 2.…

    python 2023年5月13日
    00
  • Python中使用logging模块打印log日志详解

    当我们开发Python项目时,很可能需要记录和追踪程序运行日志以便于排查问题和优化代码。Python中的logging模块提供了一种方便且强大的方法来处理日志,同时也可以按照不同的级别来过滤不同等级的日志信息。 下面是使用logging模块打印log日志的完整攻略: 1、导入logging模块 import logging 2、设定日志输出级别和格式 # 设…

    python 2023年6月5日
    00
  • 利用Python进行数据清洗的操作指南

    利用Python进行数据清洗的操作指南 数据清洗是数据分析的重要步骤之一,它可以帮助我们去除数据中的噪声、缺失值、等,从而提高数据的质量和可靠性。本文将为您详细讲解利用Python进行数据清洗的操作指南,包括数据清洗的基本步骤、常用的数据清洗方法、以及两个示例说明。 数据清洗的基本步骤 数据清洗的基本步骤包括以下几个方面: 数据预处理:包括数据采集、数据整合…

    python 2023年5月14日
    00
  • 详解Python中的各种函数的使用

    Python中有很多内置函数和标准库函数,这些函数可以帮助我们完成各种任务。下面是Python中常用函数的使用攻略: 1. 内置函数 Python中有很多内置函数,这些函数可以直接使用,无需导入任何模块。下面是一些常用的内置函数: print() print()函数用于将指定的对象输出到控制台。可以输出字符串、数字、列表、元组、字典等对象。 示例: prin…

    python 2023年5月13日
    00
  • Python画图高斯分布的示例

    以下是详细讲解Python画图高斯分布的示例的完整攻略: 1. 准备工作 首先,我们需要导入相关的Python库和模块,包括numpy和matplotlib等。在命令行中输入以下命令: import numpy as np import matplotlib.pyplot as plt 这样就可以在程序中使用numpy和matplotlib库中的函数和方法了…

    python 2023年5月19日
    00
  • 解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题

    如果使用pyinstaller打包Python脚本生成的可执行文件太大,可以使用pipenv来缩小打包后的文件大小。下面是具体的攻略: 步骤一:下载pipenv 首先要确保pipenv已经安装在本地计算机上。如果没有安装可以使用以下命令安装: pip install pipenv 步骤二:创建虚拟环境 在你的工程目录下,使用以下命令创建一个新的虚拟环境: p…

    python 2023年6月13日
    00
  • python3抓取中文网页的方法

    以下是关于“python3抓取中文网页的方法”的完整攻略。 步骤一:安装所需的库 主要需要使用以下的python库:requests、beautifulsoup4、lxml。可以直接使用pip在命令行中安装这些库: pip install requests beautifulsoup4 lxml 步骤二:使用requests库抓取网页内容 使用request…

    python 2023年5月20日
    00
  • python实现将中文日期转换为数字日期

    下面是将中文日期转换为数字日期的完整攻略: 前置知识 在实现中文日期转换为数字日期之前,你需要了解以下知识点: Python基础语法:字符串、列表、字典、时间模块等。 中文日期和数字日期的对应关系,比如“2018年7月16日”和“2018-07-16”。 代码实现 以下是将中文日期转换为数字日期的Python代码,包含了将中文数字转换为阿拉伯数字的函数: i…

    python 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部