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

在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日

相关文章

  • 简单了解python数组的基本操作

    当谈到数组时,Python 最常用的数据结构是列表(List)。Python 的列表可以看做是一个动态数组,因为它可以在运行时进行增加、删除元素的操作。下面介绍几种常见的 Python 列表操作。 1. 创建列表 要在Python中创建列表非常简单,只需将列表的元素放在中括号 [] 中即可。例如: my_list = [1, 2, 3, 4, 5] 这里创建…

    python 2023年5月14日
    00
  • Python 可迭代对象 iterable的具体使用

    针对 Python 可迭代对象 iterable 的具体使用,我为您整理了以下完整攻略: 1. 什么是可迭代对象 iterable 可迭代对象 iterable 是指能够提供一个迭代器 iterator 的对象,迭代器是一个带有 next() 方法并且返回一个迭代值的对象。通常,可迭代对象 iterable 包括 list、set、tuple、dict、st…

    python 2023年6月3日
    00
  • python实现自动生成C++代码的代码生成器

    下面将为您详细讲解如何实现一个“Python实现自动生成C++代码的代码生成器”。本攻略将包含以下几个步骤: 确定要自动生成的C++代码类型 设计代码生成器的数据结构 编写代码生成器的代码 运行代码生成器生成C++代码 一、确定要自动生成的C++代码类型 在实现代码生成器之前,需要明确要自动生成的C++代码类型,例如生成一个简单的C++类。这里就以生成一个简…

    python 2023年5月18日
    00
  • 教你用python实现自动回复QQ消息(不到60行)

    下面是该攻略的详细讲解。 简介 文章“教你用Python实现自动回复QQ消息(不到60行)”讲解了使用python和酷Q机器人框架进行自动回复QQ消息的实现方法,具体步骤如下: 下载并安装酷Q机器人框架 创建python项目,并安装requests、wxpy库 编写python代码实现自动回复 在酷Q机器人框架中配置并测试 安装酷Q机器人框架 酷Q机器人框架…

    python 2023年5月19日
    00
  • Python scrapy爬取小说代码案例详解

    Python scrapy爬取小说代码案例详解 本文将详细介绍使用Python的scrapy框架实现小说网站爬取的过程。使用Python进行网络爬虫开发,scrapy框架是一个强大的工具。 安装scrapy 使用pip安装scrapy视频,命令如下: pip install scrapy 创建scrapy项目 使用命令行创建项目: scrapy startp…

    python 2023年5月14日
    00
  • Python访问Redis的详细操作

    针对“Python访问Redis的详细操作”的完整攻略,我将会分为以下几个方面进行说明: 确认Python环境中是否已安装redis-py模块 连接Redis服务器并执行基本操作 执行数据类型相关的操作(字符串、列表、哈希、集合、有序集合) 示例说明 示例一:统计用户登录次数 示例二:用户签到系统 以下是详细的操作步骤: 1. 确认Python环境中是否已安…

    python 2023年5月14日
    00
  • 简单实现Python爬取网络图片

    下面是“简单实现Python爬取网络图片”的完整攻略: 准备工作 首先需要安装好Python,并在命令行中用以下命令安装好所需的第三方库: pip install requests # 用于发送HTTP请求 pip install beautifulsoup4 # 用于解析HTML文档 步骤 1. 获取要爬取的页面 爬取网络图片的第一步是获取要爬取的页面,可…

    python 2023年5月14日
    00
  • python 二维数组90度旋转的方法

    下面是针对“Python 二维数组90度旋转”的完整攻略: 分析问题 要对二维数组进行90度旋转,我们需要按照顺时针方向将数组中的每个元素挪动到新的位置。对于一个N×N的二维数组而言,我们可以先将整个数组分成四个以中心点为界的矩形,然后按照顺时针方向将每个矩形中的元素挪动到新位置。 解决方案 我们可以定义一个函数,接受一个二维数组作为参数,并返回旋转后的新数…

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