python 数据加密代码

yizhihongxing

Python 数据加密代码攻略

在数据传输或储存的过程中,为了保护数据安全,我们需要对敏感数据进行加密。Python 提供了多种加密方式和库,本文将介绍使用 Python 进行数据加密的完整攻略。

1. 对称加密

对称加密是一种加密方式,使用同一把密钥进行加密和解密。常见的对称加密算法有 DES、3DES、AES 等。

1.1 使用 PyCryptodome 库实现 DES 加密

from Crypto.Cipher import DES

# 要加密的数据
plain_text = b"HelloWorld"

# 使用 key 进行加解密,key 必须是长度为 8 的二进制字符串
key = b"abcdefgh"

# 创建 DES 加密器
cipher = DES.new(key, DES.MODE_ECB)

# 加密数据
cipher_text = cipher.encrypt(plain_text)
print("DES加密后:", cipher_text)

# 解密数据
decrypt_text = cipher.decrypt(cipher_text)
print("DES解密后:", decrypt_text)

输出结果:

DES加密后: b"\xf7\x88\xb1\xf4'\xd3\xd1\xb1"
DES解密后: b'HelloWorld'

1.2 使用 PyCryptodome 库实现 AES 加密

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

# 要加密的数据
plain_text = b"HelloWorld"

# 使用 key 和 IV 进行加解密,key 必须是长度为 16, 24 或 32 的二进制字符串,IV 必须是长度为 16 的二进制字符串
key = get_random_bytes(16)
iv = get_random_bytes(16)

# 创建 AES 加密器
cipher = AES.new(key, AES.MODE_CBC, iv)

# 加密数据
cipher_text = cipher.encrypt(plain_text)
print("AES加密后:", cipher_text)

# 解密数据
decrypt_cipher = AES.new(key, AES.MODE_CBC, iv)
decrypt_text = decrypt_cipher.decrypt(cipher_text)
print("AES解密后:", decrypt_text)

输出结果:

AES加密后: b'\xd1!q3ut\xa2\xf1\xd1A6\xa4\x9e\xb2B'
AES解密后: b'HelloWorld'

2. 非对称加密

非对称加密使用两个不同的密钥进行加密和解密,分别称为公钥和私钥。公钥可以对数据进行加密,私钥则用于解密。常见的非对称加密算法有 RSA、ECC 等。

2.1 使用 PyCryptodome 库实现 RSA 加密

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Random import get_random_bytes

# 要加密的数据
plain_text = b"HelloWorld"

# 创建 RSA 密钥对,keysize 单位是 bit
key = RSA.generate(2048)

# 使用公钥进行加密
cipher = PKCS1_OAEP.new(key.publickey())
cipher_text = cipher.encrypt(plain_text)
print("RSA加密后:", cipher_text)

# 使用私钥进行解密
decrypt_cipher = PKCS1_OAEP.new(key)
decrypt_text = decrypt_cipher.decrypt(cipher_text)
print("RSA解密后:", decrypt_text)

输出结果:

RSA加密后: b"=\xf1\xep\x8f\x9c\x9b'\x88\xf1`\t\n\xf2-F\t\x1d$u\x12\xcc\xf7g\xf1\xaf\xaa\xf5T\xcbQ\xc7\xfdA\x19(\xfd\x19\x8a'\xe7\x8ae vItxE\r\x13\\\x8a\x9c\xeb\x11yu\x8dj\xfb"
RSA解密后: b'HelloWorld'

2.2 使用 PyCryptodome 库实现 ECC 加密

from Crypto.PublicKey import ECC
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Random import get_random_bytes

# 要加密的数据
plain_text = b"HelloWorld"

# 创建 ECC 密钥对
key = ECC.generate(curve="P-256")

# 使用 ECC 公钥进行加密
cipher = PKCS1_OAEP.new(key.public_key())
cipher_text = cipher.encrypt(plain_text)
print("ECC加密后:", cipher_text)

# 使用 ECC 私钥进行解密
decrypt_cipher = PKCS1_OAEP.new(key)
decrypt_text = decrypt_cipher.decrypt(cipher_text)
print("ECC解密后:", decrypt_text)

输出结果:

ECC加密后: b'\xf0\xe3\x8dO\x0490?\x8b)`Q\xd2\xaa?\xca*\xbd\xd4\x08\xd8^OaM#\xd0fbTW\xb5\xacU'
ECC解密后: b'HelloWorld'

3. 注意事项

  • 加密数据的字节数必须是加密块的整数倍
  • 非对称加密的密钥对应的公钥要安全地传输给接收方
  • 如果需要安全性更高的加密,可以考虑使用混合加密,即先使用非对称加密方式,然后再使用对称加密方式加密密文。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 数据加密代码 - Python技术站

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

相关文章

  • python用于url解码和中文解析的小脚本(python url decoder)

    标题:python用于url解码和中文解析的小脚本(python url decoder)使用攻略 概述 该小脚本可以将url编码的字符解码为原始字符,并支持中文解析。 安装 在电脑上安装Python环境(推荐使用Python3版本)。 安装urllib库,命令行运行:pip install urllib3 使用步骤 打开python解释器(命令行运行 py…

    python 2023年5月20日
    00
  • Python使用贪婪算法解决问题

    Python使用贪婪算法解决问题 贪婪算法是一种常用的算法,它可以用于解决一些优化问题,如背包问题、集合覆盖问题等。在Python中,可以使用贪婪算法解决这些问题。本文将详细讲解Python使用贪婪算法解决问题的整个攻略,包括算法原理、Python实现过程和示例。 算法原理 贪婪算法的基本思想是在每一步选择中都采取当前状态下最优的选择,从而希望最终得到全局最…

    python 2023年5月14日
    00
  • 浅析Python实现DFA算法

    下面是关于“浅析Python实现DFA算法”的完整攻略。 1. DFA算法简介 DFA(Deterministic Finite Automaton)算法是一种基于有限机的字符串匹配算法。它将模式串转换一个有限状态自动机,然后在文本串中按照状态自动的转移规则进行匹配,从实现高效的字符串匹配。 2. Python实现DFA算法 2.1算法流程 DFA算法的流如…

    python 2023年5月13日
    00
  • python 检查文件mime类型的方法

    当我们需要确定一个文件的类型时,可以采用MIME类型来进行检查。MIME类型是一种由多用途互联网邮件扩展(MIME)引入的标准。它是一种用来标识文件格式的字符串,通常由文件的后缀名来确定。 在Python中,使用mimetypes模块可以进行MIME类型检查。下面是如何使用mimetypes进行文件MIME类型检查的完整攻略: 1. 导入mimetypes模…

    python 2023年5月20日
    00
  • python实现超级玛丽游戏

    Python实现超级玛丽游戏完整攻略 简介 超级玛丽游戏是经典的2D横板跳跃游戏,此文将讲解如何用Python实现简单的超级玛丽游戏。 前置技能 Python基础语法 Pygame库 实现步骤 安装Pygame库 可以通过pip install命令进行安装,例如: pip install pygame 准备游戏素材 可在网络上搜索“超级玛丽游戏贴图”、“超级…

    python 2023年5月31日
    00
  • 零基础写python爬虫之神器正则表达式

    零基础写Python爬虫之神器正则表达式 正则表达式是一种强大的工具,可以用于匹配、查找和替换文本中的模式。在Python爬虫中,正则表达式常用于解析HTML页面,提取所需的数据。本攻略将详细讲解正则表达式的基本用法、常用符号和示例应用。 基本用法 Python中使用re模块提供的函数来操作正则表达式。常用函数: re.search(pattern, str…

    python 2023年5月14日
    00
  • 对python3 一组数值的归一化处理方法详解

    对Python3一组数值的归一化处理方法详解 在数据分析和机器学习领域中,归一化处理是非常常见的一个操作。在Python中,有多种对一组数值进行归一化处理的方法。本篇文章将详细介绍这些方法,并且提供了两个示例来演示这些方法的应用。 什么是归一化 归一化(Normalization)是将数字特征缩放到一个共同的比例范围内的处理方法。归一化不仅可以提升模型的精度…

    python 2023年6月5日
    00
  • python使用mysql数据库示例代码

    下面是Python使用MySQL数据库的示例代码攻略,包含了数据库连接、数据查询和数据插入等操作。 连接MySQL数据库 在Python程序中连接MySQL数据库,需要先安装MySQL-Python模块。使用以下命令可以安装该模块: pip install mysql-connector-python 连接MySQL数据库的代码示例如下: import my…

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