使用Python进行对称和非对称密钥加密和解密

python 文件加密与解密 通过加密技术,我们可以有效防止数据在传输或存储过程中被未授权的人获取和修改。本章将介绍如何使用 Python 实现文件加密和解密操作。 阅读详情

图片

加密和解密是一种加密过程,通过使用加密密钥将敏感信息转换为不可读格式(密文),然后使用解密密钥逆转过程将其恢复为原始可读格式(明文),从而确保敏感信息的安全和保护。

加密:

加密涉及将明文数据转换为密文,使未经授权的个人或实体无法理解。这一过程是通过使用加密算法和加密密钥来实现的。其目的是确保即使加密数据被未授权方截获或访问,他们也无法在没有解密密钥的情况下理解其内容。

解密:

解密是加密的逆过程。它涉及将密文转换回原始的明文形式。为了解密密文,需要使用相应的解密算法和解密密钥。获得解密密钥访问权限的授权后方可以逆转加密过程,并恢复原始数据。

这些过程在确保各种情况下的数据安全和保密性方面发挥着至关重要的作用,例如:

  • 数据传输:在将数据通过网络(如互联网)发送之前对其进行加密,有助于防止窃听和数据拦截。
  • 数据存储:加密存储可确保数据在物理存储设备丢失、被盗或损坏的情况下免遭未经授权的访问。
  • 身份验证:加密通常用于身份验证机制,以确保凭证、令牌和其他敏感信息的安全。
  • 数字签名:加密用于创建数字签名,以验证数字文件或信息的真实性和完整性。
  • 安全通信:加密通信渠道(如HTTPS)可确保用户浏览器和网络服务器之间交换的数据安全。

现代加密技术包括对称密钥加密(使用相同的密钥进行加密和解密)和非对称密钥加密(使用一对密钥:公开密钥和私人密钥)。

对称密钥加密:

对称密钥加密是一种加密技术,数据的加密和解密都使用相同的密钥。换句话说,发送方和接收方共享同一密钥。这一过程包括使用加密密钥将明文数据转换为密文,然后使用相同的密钥进行解密,逆转过程以获得原始明文。

对称密钥解密:

对称密钥解密是使用加密时所使用的相同密钥将加密数据(即密文)转换回原始明文形式的过程。在对称加密技术中,加密和解密都使用相同的密钥。

非对称密钥加密:

非对称密钥加密又称公钥加密,是一种使用一对密钥(公钥和私钥)来确保通信安全和保护数据的加密技术。对称加密在加密和解密时使用相同的密钥,而非对称加密则不同,在这两个过程中使用不同的密钥。

非对称密钥解密:

非对称密钥解密是非对称加密的一部分,在其中使用一对密钥:用于加密的公钥和用于解密的私钥。公钥可以公开共享,而私钥必须保密。在此过程中,使用相应公钥加密的数据只能使用私钥解密。

实现对称密钥加密的Python代码:

图片

对称密钥加密代码解析:

import boto3和import os:导入必要的库,Boto3用于与AWS交互,os用于操作系统相关的操作。

region_name = '<aws-region-name>'和kms_key_id = '<kms-key>':设置用于加密的AWS区域名称和KMS密钥ID。将<aws-region-name>和<kms-key>替换为实际值。

input_file_name = '<path-to-input-csv-file>'和output_file_name = '<path-to-store-the-output-encrypted-file>':指定要加密的输入文件的路径和存储加密输出的路径。

kms_client = boto3.client('kms', region_name=region_name):为指定的AWS区域初始化KMS客户端对象。

with open(input_file_name, 'rb') as input_file:以二进制模式('rb')打开输入文件进行读取。

input_data = input_file.read():将输入文件(明文数据)的内容读取到input_data变量中。

response = kms_client.encrypt(...):使用指定的KMS密钥(kms_key_id)加密input_data。从响应中获取加密数据。

encrypted_data = response['CiphertextBlob']:从响应中提取加密数据(密文)。

with open(output_file_name, 'wb') as output_file:以二进制模式('wb')打开一个新文件进行写入。

output_file.write(encrypted_data):将加密数据(来自encrypted_data变量)写入输出文件。

实现对称密钥解密的Python代码:

图片

对称密钥解密代码解析:

import boto3:导入Boto3库,这是Python的AWS SDK。

region_name = '<aws-region-name>'和kms_key_id = '<kms-key>':设置用于解密的AWS区域名称和KMS密钥ID。将<aws-region-name>和<kms-key>替换为实际值。

input_file_name = '<path-of-the-encrypted-file>'和output_file_name = '<path-to-store-the-decrypted-file>':指定加密的输入文件和解密的输出文件的路径。

kms_client = boto3.client('kms', region_name=region_name):为指定的AWS区域初始化KMS客户端对象。

with open(input_file_name, 'rb') as input_file:以二进制模式('rb')打开加密的输入文件进行读取。

encrypted_data = input_file.read():将加密输入文件(密文)的内容读取到encrypted_data变量中。

response = kms_client.decrypt(...):使用指定的KMS密钥(kms_key_id)解密encrypted_data。从响应中获取解密数据。

decrypted_data = response['Plaintext']:从响应中提取解密数据(明文)。

with open(output_file_name, 'wb') as output_file:以二进制模式('wb')打开一个新文件进行写入。

output_file.write(decrypted_data):将解密数据(来自decrypted_data变量)写入输出文件。

decrypted_data = response['Plaintext']:再次将解密数据赋值给decrypted_data变量。

print(decrypted_data.decode('utf-8')):将解密数据解码为UTF-8格式并打印到控制台上。

实现非对称密钥加密的Python代码:

图片

非对称密钥加密代码解析:

import boto3:导入Boto3库,这是用于Python的AWS SDK。

kms = boto3.client('kms', region_name='<aws-region>'):为指定的AWS区域设置一个KMS客户端对象。将<aws-region>替换为所需的AWS区域。

key_id = '<public-key-from-aws-kms>':指定将用于加密的公钥的ID。你需要用AWS KMS中的实际密钥ID替换此处。

response = kms.get_public_key(KeyId=key_id):检索与指定密钥ID相关联的公钥。

public_key = response['PublicKey']:从响应中提取公钥内容。

with open('<path-of-file-to-encrypt>', 'rb') as f:以二进制模式('rb')打开要加密的文件以供读取。将<path-of-file-to-encrypt>替换为实际的文件路径。

data = f.read():将要加密的文件内容读取到数据变量中。

encrypted_data = kms.encrypt(...):使用公钥(public_key)和指定的加密算法(RSAES_OAEP_SHA_1)对数据进行加密。加密后的数据存储在encrypted_data变量中。

with open('<path-to-store-encrypted-file>', 'wb') as f:以二进制模式('wb')打开一个新文件以供写入加密数据。将<path-to-store-encrypted-file>替换为存储加密文件的目标路径。

f.write(encrypted_data['CiphertextBlob']):将加密的密文(来自encrypted_data变量)写入新文件。

实现非对称密钥解密的Python代码:

图片

非对称密钥解密代码解析:

import boto3:导入Boto3库,这是用于Python的AWS SDK。

kms = boto3.client('kms', region_name='<aws-region>'):为指定的AWS区域设置一个KMS客户端对象。将<aws-region>替换为所需的AWS区域。

key_id = '<private-key-from-aws-kms>':指定将用于解密的私钥的ID。你需要用AWS KMS中的实际密钥ID替换此处。

with open('<path-of-encrypted-file>', 'rb') as f:以二进制模式('rb')打开加密文件以供读取。将<path-of-encrypted-file>替换为实际的文件路径。

encrypted_data = f.read():将加密文件的内容读取到encrypted_data变量中。

decrypted_data = kms.decrypt(...):使用由key_id指定的私钥对encrypted_data进行解密。解密后的数据存储在decrypted_data变量中。

with open('<path-to-store-decrypted-file>', 'wb') as f:以二进制模式('wb')打开一个新文件以供写入解密数据。将<path-to-store-decrypted-file>替换为存储解密文件的目标路径。

f.write(decrypted_data['Plaintext']):将解密的明文(来自decrypted_data变量)写入新文件。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方优快云官方认证二维码或者点击链接免费领取【保证100%免费】

【Python】数据加密解密技术 Python如何加密解密?感兴趣的小伙伴可以举一下脚,我看看有多少。咳咳咳,正式开始了,今天给大家分享的是Python如何加密解密,感兴趣的小伙伴要认真学起来。 前言 加密算法主要分为:哈希算法、对称加密算法、非对称加密算法。 •哈希算法:MD5、SHA256 •对称加密算法:DES、AES、CBC •非对称加密算法:RSA 此外,还有一种编码算法,叫Base64(注意它不是加密算法),也是用的比较多的。 一、哈希算法 哈希是一种加密算法,也称为散列函数或杂凑函数。哈希函数是一个公共函数,可以将任意长度 阅读详情

相关推荐

前后端加密解密 【JS加密模块(md5 、 crypto 、 crypto-js、jsencrypt) python RSA加密解密(pycryptodome )模块安装与使用】

应用的场景是需要前端通过公钥对需要加密的密文进行加密,后端通过私钥对前端加密的密文进行解密。通过自定义的密钥进行加解密,可以更灵活的加解密密文,但是因为密文的key在可以通过前端看到,所以加密的信息虽然通过解密网站无法解密,但是可以通过在前端得到的公共key进行解密。js-md5准确来说不算是加密,应该说是将密文序列化了,可以通过下列的网站将md5加密后的字符直接解析出来,因此安全性很低。方面简化后的代码贴在下方,可供参考,后端方面的参考下方链接的第二个博文。中生成的后保存在本地的,自己保存一下。

前端、python爱好者 1万+

Python代码实现MD5、AES对称加密和RSA非对称加密以及OpenSSl实践

需要引入hashlib库。代码如下: 运行结果: 代码封装一下: 2、AES对称加密和解密 2.1 什么是对称加密? 在对称加密算法中,加密和解密使用的是同一把钥匙,即:使用相同的密匙对同一密码进行加密和解密;发送方(原文)——秘钥加密——>密文———秘钥解密———> 接收方(原文)加密:原文 + 秘钥 = 密文 解密:密文 - 秘钥 = 原文发送方发送的原文,通过秘钥加密后的密文发送给接收方,接收方用同一把秘钥解密后得到原文。我使用的是Python3,安装pycryptodome。安装前最好卸载cryp

weixin_44691253的博客 2496

国密算法:利用python进行sm4算法的加解密,对称密钥

本篇利用python中的gmssl库进行sm4算法的加解密演示。

记录和分享程序人生的点点滴滴 1万+

[1249]python实现rsa非对称加密解密

这两种方法都可以实现RSA加密,第一种方法使用了Python的内置模块rsa,而第二种方法使用了第三方库cryptography。请注意,第二种方法需要先安装cryptography库。两种方法的核心思路是相同的,即生成密钥对、加密和解密过程,只是具体的实现细节有所不同。参考:https://blog.youkuaiyun.com/qq_25500415/article/details/118558579。

周小董 3040

Python3:RSA 非对称加密 - 密钥对生成、加解密和签名验签

本文将讲解如何使用Python3实现RSA非对称加密算法中的密钥对生成、加解密以及签名验签等操作。本文介绍了如何使用Python3实现RSA非对称加密算法中的密钥对生成、加解密以及签名验签等操作。RSA算法是一种常用的加密算法,可以在数据传输过程中保证数据的安全性。RSA算法使用一对密钥,即公钥和私钥,来完成加密和解密操作。在密钥对生成过程中,我们需要先生成一对公钥和私钥,并保证私钥的安全性。在RSA算法中,使用公钥对消息进行加密,使用私钥对密文进行解密。为生成密钥对的长度,可以根据需要进行调整。

BUG?不存在的! 1659

Python实现 对称加密算法和非对称加密算法

1. **定义**:对称加密算法使用相同的密钥进行加密和解密。也就是说,密钥的长度等于加密密钥的长度。4. **示例**:AES(高级加密标准)、DES(数据加密标准)、3DES(三重数据加密算法)。2. **速度**:通常非对称加密算法速度较慢,因为加解密过程使用的是两个不同的密钥。2. **速度**:通常对称加密算法速度较快,因为加解密过程使用的是同一个密钥。3. **用途**:适合加密小量的数据,如SSL握手过程中的密钥交换。3. **用途**:适合加密大量数据,如SSL握手后的数据传输加密。

wjianwei666的专栏 533

chatgpt赋能python:Python加密解密算法的介绍

Python的加密解密算法是一种用于保护敏感信息的技术。加密算法利用各种算法将普通文本转换为加密文本,因此除非具有访问密钥的人,否则无法再次访问原始文本。解密算法则解密加密文本,将其转换回原始文字。Python中的加密算法包括对称密钥算法和非对称密钥算法。对称密钥算法要求发送方和接收方都具有相同的密钥,使其更加高效。非对称密钥算法则要求接收方拥有一个私钥,而发送方拥有与之匹配的公钥,以便进行加密。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt。

suimodina的博客 339

Python:实现密码加密解密(含完整源码)

在加密时,我们需要指定加密密钥,并进行填充和base64编码。在解密时,我们需要对传入的密文进行base64解码,再进行解密和填充去除。本文将讲解如何使用Python编写一个简单的密码加密解密程序,并提供完整源代码。我们需要使用到pycrypto库来实现密码加密解密的功能。在Python中,我们可以使用AES算法来实现密码加密解密的功能。让我们来测试一下我们刚才编写的加密解密函数吧。至此,我们已经成功实现了一个简单的密码加密解密程序。希望这个简单的示例能够帮助你更好地理解Python中的密码加密解密。

持续更新 4203

chatgpt赋能python:Python解密文件:你需要了解的知识点

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

yakuchrisfor的博客 216

SSL中的对称加密与非对称加密数据安全

在网络通信中,数据的安全性是至关重要的,特别是在涉及敏感信息传输的场景中。本文将详细介绍SSL中的对称加密和非对称加密,并提供相应的源代码示例。对称加密算法的优点是加密和解密速度快,适合大量数据的加密。明文数据被加密后产生的密文和附加的认证标签被发送给接收方。接收方使用相同的密钥和附加的认证标签来解密数据。加密后的密文被发送给接收方。综上所述,SSL中的对称加密和非对称加密都在保护数据的安全性方面发挥着重要的作用。对称加密适用于大量数据的加密和解密,而非对称加密则提供了更高的安全性和密钥传输的便利。

UneDatabase的博客 246

ARM SMMUv3设备树配置实战:从零开始为RK3588搭建IOMMU环境

本文详细介绍了在RK3588平台上配置ARM SMMUv3设备树的实战经验。从理解硬件架构、设备树节点定义,到内核驱动集成与调试,提供了完整的IOMMU环境搭建指南,并分享了解决StreamID冲突、中断配置等常见问题的技巧,帮助开发者高效完成控制器初始化。

l3m4n的博客 883

python实现非对称加密算法_rsa非对称加密-python实现

Boblee人工智能硕士毕业,擅长及爱好python,基于python研究人工智能、群体智能、区块链等技术,并使用python开发前后端、爬虫等。1公私钥关系非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一...

weixin_39884323的博客 2158

AI 赋能测试全生命周期:多 Agent 协同的自动化提效方案

本文提出了一种基于Coze平台的多Agent协同测试解决方案,旨在解决软件测试中PRD解析不清晰、测试点覆盖不全、用例编写效率低、代码生成耗时等痛点。通过PRD优化、测试点生成、测试用例生成和单元测试框架生成四个Agent的协同工作,结合Cursor工具实现从需求到代码的全链路自动化。以电商平台登录模块为例,展示了从模糊PRD到标准化测试用例和可执行Java单元测试代码的完整转化流程。该方案通过AI赋能显著提升测试效率,减少人工干预,实现测试覆盖率≥95%,为快速迭代的软件研发提供了高效的测试自动化支持。

QINJIEEE的博客 1100

带你理解对称加密和非对称加密

对称加密:就像小明和小红共享一个“密码本”,加密和解密速度快,但密钥管理复杂。非对称加密:就像小红使用公开信箱和私人信箱,安全性高,但加密和解密速度较慢。

m0_74293254的博客 978

科大讯飞(1): 环形6麦语音唤醒—驱动板上的接口

介绍环形麦阵列驱动板上的接口,及其疑问

bing_feilong的博客 1175

ROS基础(一)——命令行代码(以小乌龟程序为例)

ROS学习(一)——命令行代码(以小乌龟程序为例)1 基础命令行语句1.1 roscore1.2 rqt_graph(显示系统计算图)1.3 rosnode(显示所有节点相关信息)1.4 rostopic(和话题相关)2 服务类型指令rosservice同时存在两只海龟3 指令记录 1 基础命令行语句 从大二四旋翼无人机编队后就没再接触过ROS了,最近由于科研任务需要重新捡起来,打算系统学一下!学习过程参考古月居老师的视频,有兴趣的同学可以去[BliBli]学习。 学习平台:Ubuntu 18.04 硬件

北理自动化小白 6263

国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析

RSA(Rivest-Shamir-Adleman)是一种广泛使用的非对称加密算法。它利用了大数因数分解的困难性来确保加密的安全性。RSA 算法的关键特征在于它使用一对密钥:公钥和私钥。公钥用于加密数据,而私钥用于解密数据。

switch616的博客 1794

Python 爬虫实战:全球渔业船舶捕捞记录数据采集与分析全攻略

通过本项目,我们实现了对全球渔业船舶捕捞记录数据的采集、处理和可视化,为渔业资源管理和海洋生态保护提供了数据支持。未来,可以进一步结合机器学习和深度学习技术,对捕捞行为进行预测和分类,提高对非法捕捞活动的识别能力。

2201_76125261的博客 557

RSA 非对称加密

# -*- coding: utf-8 -*- import rsa # 先生成一对密钥,然后保存.pem格式文件,当然也可以直接使用 (pubkey, privkey) = rsa.newkeys(1024) print pubkey, privkey pub = pubkey.save_pkcs1() pubfile = open('public.pem','w+') pubfile.wr

Da Cheng Xu 的专栏 2548

推荐11个顶级的Claude Code Skills

ClaudeCode的Skills系统为程序员提供了11个强大的AI辅助工具,包括代码审查、重构建议、单元测试生成、API文档自动生成、性能分析、安全扫描、数据库迁移脚本生成、CI/CD配置、依赖管理、ER图生成和日志分析等功能。这些"技能包"可大幅提升开发效率,从代码质量到协作沟通全方位优化工作流程。用户可根据需求选择2-3个核心功能开始尝试,熟练后还可自定义Skills。该系统需要配合Anthropic的API使用,建议先在小型项目测试再应用于核心业务。

分享AI、区块链技术及应用,未来已来 1849

DDR5 JEDEC标准简析:一次读懂DDR5的核心规范!

JEDEC,全称是,中文名称是「电子元件工程联合委员会」,它是全球权威的存储接口标准制定机构。我们常见的 DDR2、DDR3、DDR4、DDR5 都是它搞出来的。📌 JEDEC 就像存储接口界的“裁判+编剧”——规定谁该怎么跑,怎么演,怎么配合。

weixin_43199439的博客 2569

RSA非对称加密原理与模拟非对称加密交换

非对称加密算法原理&& RSA加密原理。&&RSA非对称加密交换模拟

renielnxy的博客 821

RK3576 Buildroot 双机 ADB 异常排障实录:同版 `boot.img`,一台可识别一台不可识别

进程在跑”不等于“USB 枚举成功”,adbd存活只是必要不充分条件。生产环境中的全局别名可能反向污染系统脚本。shell 命令替换中的字符串问题,必须做字节级验证(od -tx1相比“改环境规避”,核心脚本对输入做鲁棒处理更可长期维护。

小灰灰的博客 209

基于Python的非对称加密与对称加密相结合的文件传输系统设计与实现

摘要:本文设计并实现了一个基于Python的混合加密文件传输系统,结合RSA非对称加密和AES对称加密的优势,解决了网络文件传输中的安全问题。系统采用RSA进行密钥交换和身份验证,AES加密文件内容,实现高效安全的传输。通过Socket网络编程实现客户端-服务端通信,并使用Tkinter开发了图形化界面。系统包含密钥管理、文件加密传输和GUI三大模块,支持跨平台使用,具有操作简便、安全性高等特点,适用于教育、企业等多种场景。该设计为密码学理论应用提供了实践案例,具有教学和研究价值。

laoman456的博客 1397

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 使用Python轻松实现文档编写
下一篇: 手把手教你使用Python从零开始搭建感知器
我爱学大模型
博客等级 码龄3年 7883粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值