Python常用base64 md5 aes des crc32加密解密方法汇总

Python常用加密解密方法汇总

在Python中,常用的加密解密方法有许多,比如base64、md5、aes、des、crc32等等。本文将对这些方法进行详细的讲解,并提供一些使用示例。

base64加密解密

base64是一种将二进制数据编码为ASCII字符的方法,通常用于在HTTP协议、电子邮件、XML等场景下传输较长的标识信息,以便于处理和传输。Python中内置了base64模块,可以方便地进行base64的编码和解码。

编码

import base64

data = b'Hello, World!' # 需要编码的二进制数据
encoded_data = base64.b64encode(data)
print(encoded_data) # 输出:b'SGVsbG8sIFdvcmxkIQ=='

解码

import base64

encoded_data = b'SGVsbG8sIFdvcmxkIQ==' # 需要解码的base64编码数据
decoded_data = base64.b64decode(encoded_data)
print(decoded_data) # 输出:b'Hello, World!'

MD5加密

MD5是一种常用的哈希算法,它可以将任意长度的消息压缩为一个128位的消息摘要。Python中内置了hashlib模块,可以方便地进行MD5的计算。

计算MD5值

import hashlib

data = b'Hello, World!' # 需要计算MD5值的二进制数据
md5 = hashlib.md5()
md5.update(data)
print(md5.hexdigest()) # 输出:'86fb269d190d2c85f6e0468ceca42a20'

AES加密解密

AES是一种高级加密标准,是一种对称密钥加密算法。Python中可以使用pycryptodome模块进行AES的加密和解密。

加密

from Crypto.Cipher import AES

key = b'1234567890123456' # 密钥,需要16字节的长度
iv = b'1234567890123456' # 初始化向量,需要16字节的长度
data = b'Hello, World!' # 需要加密的二进制数据
cipher = AES.new(key, AES.MODE_CBC, iv)
encrypted_data = cipher.encrypt(data)
print(encrypted_data) # 输出:b'\xc1\xba\xf4ID\t\xf8\xa6\x1b\x0b\xb1\x9f3\xd6m'

解密

from Crypto.Cipher import AES

key = b'1234567890123456' # 密钥,需要16字节的长度
iv = b'1234567890123456' # 初始化向量,需要16字节的长度
encrypted_data = b'\xc1\xba\xf4ID\t\xf8\xa6\x1b\x0b\xb1\x9f3\xd6m' # 需要解密的二进制数据
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted_data = cipher.decrypt(encrypted_data)
print(decrypted_data) # 输出:b'Hello, World!'

DES加密解密

DES是一种对称密钥加密算法,使用方法与AES类似。Python中可以使用pycryptodome模块进行DES的加密和解密。

加密

from Crypto.Cipher import DES

key = b'12345678' # 密钥,需要8字节的长度
iv = b'12345678' # 初始化向量,需要8字节的长度
data = b'Hello, World!' # 需要加密的二进制数据
cipher = DES.new(key, DES.MODE_CBC, iv)
encrypted_data = cipher.encrypt(data)
print(encrypted_data) # 输出:b'\x86\x7f\x1c(\x8c\x08I\xffiH\xcb@\xee'

解密

from Crypto.Cipher import DES

key = b'12345678' # 密钥,需要8字节的长度
iv = b'12345678' # 初始化向量,需要8字节的长度
encrypted_data = b'\x86\x7f\x1c(\x8c\x08I\xffiH\xcb@\xee' # 需要解密的二进制数据
cipher = DES.new(key, DES.MODE_CBC, iv)
decrypted_data = cipher.decrypt(encrypted_data)
print(decrypted_data) # 输出:b'Hello, World!'

crc32校验码

crc32是一种循环冗余校验码,主要用于数据传输错误的检测。Python中可以使用zlib模块进行crc32校验。

计算CRC32校验码

import zlib

data = b'Hello, World!' # 需要计算CRC32校验码的二进制数据
crc32 = zlib.crc32(data)
print(crc32) # 输出:2229579579

至此,本文对Python常用的base64、md5、aes、des、crc32加密解密方法进行了详细的介绍,并给出了使用示例。希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python常用base64 md5 aes des crc32加密解密方法汇总 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • Python中的集合介绍

    Python中的集合介绍 在Python中,集合是一种无序的、可变的数据类型,用于存储不重复的元素。集合是一种非常常用的数据类型,可以用于去重、交、并集操作。本文将详细介绍Python中的集合,包括集合的创建、集合的操作、集合的方法等。 集合的创建 要创建一个集合,我们可以使用set()函数或使用花括号{}。例如: # 创建集合 my_set = set([…

    python 2023年5月13日
    00
  • 在 Python 与 C 中打印空字符(“\x00”)

    【问题标题】:Printing Null Character (“\x00”) in Python vs C在 Python 与 C 中打印空字符(“\x00”) 【发布时间】:2023-04-06 20:29:02 【问题描述】: 当我编写代码并运行语句时: print “\x00\x00\x00” 在 Python 中,它输出三个空格,后跟一个换行符。但…

    Python开发 2023年4月7日
    00
  • Python数据结构树与算法分析

    Python数据结构树与算法分析 树是一种非常重要的数据结构,它在计算机科学中有着广泛的应用。在Python中,使用多种来实现树,包括列表、字典、类等。本文将详细讲解Python数据结构树与算法分析的完整攻略包括树的基本概念、Python实现过程和示例。 树的基本概念 树是一种非线性的数据结构它由一组节点和一组边组成。树的基本概念包括: 根节点:树的顶部节点…

    python 2023年5月13日
    00
  • 初窥Python门缝了解入门路径

    初窥Python门缝了解入门路径 确定学习版本 Python有两个主要的版本:Python 2和Python 3。由于Python 2的支持已于 2020 年 1 月 1 日停止,因此我们强烈建议选择 Python 3。 选择开发环境 Python开发环境有很多种,你需要选择适合自己的开发环境。以下是一些常用的开发环境: PyCharm:JetBrains推…

    python 2023年5月14日
    00
  • python自定义线程池控制线程数量的示例

    下面就是Python自定义线程池控制线程数量的完整攻略: 1. 什么是线程池? 线程池是一种线程管理方式,它可以减少线程创建和销毁的开销,提高线程的复用率。线程池在应用程序中大量使用,可有效减轻计算机资源的消耗,提高计算机系统的性能。 2. Python中的线程池 在Python中,我们可以使用标准库中的ThreadPoolExecutor类创建自定义线程池…

    python 2023年5月19日
    00
  • Python表示矩阵的方法分析

    Python表示矩阵的方法分析 在Python中,我们可以使用多种方法来表示矩阵,包括列表、NumPy数组、SciPy稀疏矩阵等。针对不同的场景,我们可以选择不同的表示方法。 使用Python列表表示矩阵 Python列表是最基本的数据结构,可以用来表示矩阵。对于一个$m \times n$的矩阵,我们可以用一个m维的列表来表示矩阵的每一行,用n维的子列表来…

    python 2023年6月5日
    00
  • Python re 模块findall() 函数返回值展现方式解析

    Python 的 re 模块是正则表达式的标准库,提供了多种正则表达式操作函数。其中,findall() 函数是用来查找匹配的所有子串,并返回一个列表,列表中每个元素是匹配的子串。在本文中,我们将对 findall() 函数返回值的展现方式进行解析,以帮助读者更好地理解使用该函数的结果。 findall() 函数语法 findall() 函数定义如下: re…

    python 2023年6月3日
    00
  • 用python批量解压带密码的压缩包

    首先,在Python中我们可以使用zipfile模块来处理压缩文件。zipfile模块提供了ZipFile和ZipInfo两个核心类,可以用来解析和处理zip压缩文件。 接下来是具体步骤: 导入库 import zipfile 创建ZipFile对象,打开压缩包 zip_file = zipfile.ZipFile(‘file.zip’) 打开压缩包中的某个…

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