如何在Python中进行加密和解密?

yizhihongxing

在Python中进行加密和解密可以通过加密算法实现,本次攻略中将介绍两种加密算法:AES和RSA。

AES加密和解密

安装依赖库

在Python中进行AES加密和解密需要使用Crypto库,可以通过以下命令安装:

pip install pycrypto

导入库

在Python代码中引入相关依赖库:

from Crypto.Cipher import AES
import base64
import os

加密函数

def aes_encrypt(key, text):
    '''
    AES加密函数
    :param key: 密钥
    :param text: 待加密文本
    :return: base64编码后的密文
    '''
    iv = os.urandom(16)  # 生成16位随机向量
    key = bytes(key, encoding='utf-8')
    cipher = AES.new(key, AES.MODE_CBC, iv)
    pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16)
    # 先进行填充
    encrypted_text = cipher.encrypt(pad(text))
    # 将加密后的密文和向量使用base64编码后返回
    return base64.b64encode(encrypted_text + iv).decode()


解密函数

def aes_decrypt(key, text):
    '''
    AES解密函数
    :param key: 密钥
    :param text: 待解密密文
    :return: 解密后的文本
    '''
    # 先进行base64解码
    text = base64.b64decode(text.encode())
    iv = text[-16:]  # 先取出向量
    key = bytes(key, encoding='utf-8')
    cipher = AES.new(key, AES.MODE_CBC, iv)
    # 进行解密并去掉填充的字符
    return cipher.decrypt(text[:-16]).decode().rstrip('\0')

示例

key = "this_is_a_secret_key" # 密钥
text = "hello world" # 待加密文本

# 进行加密
encrypted_text = aes_encrypt(key, text)
print('加密后的密文:', encrypted_text)

# 进行解密
decrypted_text = aes_decrypt(key, encrypted_text)
print('解密后的文本:', decrypted_text)

RSA加密和解密

安装依赖库

在Python中进行RSA加密和解密需要使用Crypto库,可以通过以下命令安装:

pip install pycrypto

导入库

在Python代码中引入相关依赖库:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64

密钥生成函数

def generate_key():
    '''
    RSA密钥生成函数,生成1024位密钥对
    :return: 公钥和私钥
    '''
    key = RSA.generate(1024)
    private_key = key.export_key()
    public_key = key.publickey().export_key()
    return public_key, private_key

加密函数

def rsa_encrypt(public_key, text):
    '''
    RSA加密函数
    :param public_key: 公钥
    :param text: 待加密文本
    :return: base64编码后的密文
    '''
    rsa_key = RSA.import_key(public_key)
    cipher = PKCS1_v1_5.new(rsa_key)
    # 进行加密并返回base64编码的密文
    return base64.b64encode(cipher.encrypt(text.encode())).decode()


解密函数

def rsa_decrypt(private_key, text):
    '''
    RSA解密函数
    :param private_key: 私钥
    :param text: 待解密密文
    :return: 解密后的文本
    '''
    rsa_key = RSA.import_key(private_key)
    cipher = PKCS1_v1_5.new(rsa_key)
    # 先进行base64解码
    text = base64.b64decode(text.encode())
    # 进行解密并返回解密后的文本
    return cipher.decrypt(text, None).decode()

示例

# 生成密钥对
public_key, private_key = generate_key()
print('公钥:', public_key)
print('私钥:', private_key)

text = "hello world"
# 进行加密
encrypted_text = rsa_encrypt(public_key, text)
print('加密后的密文:', encrypted_text)

# 进行解密
decrypted_text = rsa_decrypt(private_key, encrypted_text)
print('解密后的文本:', decrypted_text)

以上就是在Python中进行加密和解密的完整攻略,演示了两个例子:AES和RSA加密解密的示例代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Python中进行加密和解密? - Python技术站

(0)
上一篇 2023年4月19日
下一篇 2023年4月19日

相关文章

  • 最新版 Windows10上安装Python 3.8.5的步骤详解

    下面是“最新版Windows10上安装Python3.8.5的步骤详解”的完整攻略: 安装Python3.8.5的步骤详解 Step 1:下载Python 3.8.5的安装包 在官网上下载Python 3.8.5的安装包:https://www.python.org/downloads/windows/ 推荐下载Windows x86-64 executab…

    python 2023年5月14日
    00
  • Python 使用字符串

    Python 中字符串属于基本的数据类型之一,它可以定义为一串字符的有序集合。在 Python 中,我们可以使用各种方式对字符串进行操作,包括字符串的连接、切片、查找、替换、格式化等。接下来,我将为您详细讲解如何在 Python 中使用字符串。 字符串的定义 Python 中可以使用单引号(‘)、双引号(“)、三单引号(”’)、三双引号(“””)来定义字符…

    python-answer 2023年3月25日
    00
  • Python3+Selenium+Chrome实现自动填写WPS表单

    现在我将详细讲解如何使用Python3、Selenium和Chrome来实现自动填写WPS表单的完整攻略。以下是步骤概述: 下载安装Chrome浏览器和对应版本的ChromeDriver驱动程序 使用pip安装selenium和webdriver_manager库 编写Python脚本,包含以下功能: 打开Chrome浏览器,并设置头部信息和窗口大小 打开W…

    python 2023年6月3日
    00
  • python中字符串内置函数的用法总结

    为了更好地让读者了解并掌握Python字符串内置函数的使用方法,本文将从以下几个方面进行介绍: Python字符串的基本操作 字符串内置函数的分类 字符串内置函数的用法总结 Python字符串的基本操作 字符串是Python中的一种基本数据类型,可以用单引号或双引号表示,例如: text1 = ‘hello world!’ text2 = "Pyt…

    python 2023年6月5日
    00
  • Python3 sys.argv[ ]用法详解

    当我们在命令行中运行 Python 脚本时,可以通过 sys.argv 获取脚本执行时传入的参数。sys.argv 是 Python 的内置模块 sys 中的一个变量,它是一个字符串列表,其中包含了命令行参数列表。sys.argv[0] 表示脚本本身的文件名, sys.argv[1:] 则表示传入的参数列表。 以下为 sys.argv 的常见用法及示例: 获…

    python 2023年6月2日
    00
  • 让python json encode datetime类型

    要让 Python 的 json 库能够编码 (encode) datetime 类型,我们需要创建一个自定义的 JSONEncoder 类,并重写它的 default() 方法。以下是详细流程。 导入 datetime 和 json 库 在代码文件的顶部,需要导入 datetime 和 json 库,因为我们将要使用这两个库来编码和解码 JSON 格式数据…

    python 2023年6月2日
    00
  • 您可以从 Windows 符号链接导入 Python 模块吗?

    【问题标题】:Can you import a Python module from a Windows symbolic link?您可以从 Windows 符号链接导入 Python 模块吗? 【发布时间】:2023-04-03 02:44:02 【问题描述】: 我正在使用 Windows 7 计算机为 Python 3 项目做出贡献。 为了在进行和测试…

    Python开发 2023年4月8日
    00
  • Python实现运行其他程序的四种方式实例分析

    Python实现运行其他程序的四种方式实例分析 本文将介绍在Python中运行其他程序的四种常见方式。这些方法适用于需要自动化执行操作的情况。 一、使用os.system函数 os.system()函数可用于在Python中执行外部命令。只需传递要执行的命令字符串即可。 示例一 在此示例中,我们将使用os.system()函数打开一个文本文件。 import…

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