当前位置: 首页 > news >正文

文件的加密与解密学习笔记

一些可能想知道的:

  • cryptography库:密码学工具包

  • Fernet 是crytography 里的一个模块,用于对称加密

  • with open() as file #为了保证无论是否出错都能正确地关闭文件,与try...finally...相同

  • open() #用于读文件(默认情况下只读 “r”)

  • Python 的 f-string(格式化字符串字面量)将变量动态插入到字符串中。

  • 通过 if __name__ == "__main__" 的条件判断,可以确保 main 函数仅在文件被直接运行时执行,而不会在导入时触发。

典:文件加密与解密

#加入模块:Fernet 对称加密
from cryptography.fernet import Fernet#加密操作
def encrypt_file(file_path,key):with open(file_path,'rb') as file :#明文读取plaintext = file.read()#密钥及密文生成cipher_suite = Fernet(key)ciphertext = cipher_suite.encrypt(plaintext)#生成加密后的输出路径和文件output_file = f"{file_path}.encrypted"with open(output_file,'wb')as file:file.write(ciphertext)# 将生成的密钥生成文件为了后续解密key_file = f"{file_path}.key"with open(key_file, 'wb') as file:file.write(key)print(f"加密完成,加密后的文章保存为:{output_file}")print(f"密钥已经保存到:{key_file}")
#解密操作
def decrypt_file(file_path,key):with open(file_path,'rb') as file:ciphertext = file.read()cipher_suite = Fernet(key)plaintext = cipher_suite.decrypt(ciphertext)output_file = f"{file_path}.decrypted"with open(output_file,'wb') as file:file.write(plaintext)print(f"解密完成,解密后的文件保存为:{output_file}")def main():print("欢迎使用文件加密和解密程序!")print("1.加密文件")print("2.解密文件")choice = input("请选择操作(1/2):")if choice == '1':file_path = input("请输入要加密的文件路径:")key = Fernet.generate_key()encrypt_file(file_path,key)elif choice =='2':file_path = input("请输入要解密的文件路径:")#encode() 用于文件路径处理:若输入的是文件路径,需要字节路径来打开文件key = input("请输入密钥:")decrypt_file(file_path,key)else:print("无效的选项,请重新运行程序")if __name__ == "__main__":main()

相关文章:

文件的加密与解密学习笔记

一些可能想知道的: cryptography库:密码学工具包 Fernet 是crytography 里的一个模块,用于对称加密 with open() as file #为了保证无论是否出错都能正确地关闭文件,与try...finally...相同 open() #用于读文件(默认…...

《TCP/IP网络编程》学习笔记 | Chapter 24:制作 HTTP 服务器端

《TCP/IP网络编程》学习笔记 | Chapter 24:制作 HTTP 服务器端 《TCP/IP网络编程》学习笔记 | Chapter 24:制作 HTTP 服务器端HTTP 概要理解 Web 服务器端无状态的 Stateless 协议请求消息(Request Message)的结构响应消息&#x…...

Apache POI(笔记)

介绍: 坐标: 写入Excel表格: 读取Excel表格:...

Table类型的表单

形如下面的图片 1 label与prop属性 const columns[{label: "文件名",prop: "fileName",scopedSlots: "fileName",},{ label: "删除时间",prop: "recoveryTime",width: "200",},{ label: "大小",prop:…...

Spring 中的验证、数据绑定和类型转换

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

【技术派后端篇】canal实现MySQL/Redis缓存一致性

1 前言 在探讨如何利用canal实现MySQL/Redis缓存一致性之前,强烈建议大家先阅读以下几篇相关文章,因为本文是基于这些文章的基础上展开的: 《深度剖析 MySQL 与 Redis 缓存一致性:理论、方案与实战》 :该文详细阐述了…...

华清远见STM32F103智能小车重磅上线!循迹避障红外遥控WiFi远程控制,0基础小白从入门到单片机软硬件项目实战!

STM32F103智能云控小车是由华清远见倾力打造的一款多功能智能小车,专为高校教学、学生毕业设计、创新竞赛、单片机入门学习及项目实践量身定制。这款小车集红外遥控、远程物联网控制、智能巡线、高精度避障和交互式显示屏五大核心功能于一体,融合了物联网…...

李飞飞团队新作WorldScore:“世界生成”能力迎来统一评测,3D/4D/视频模型同台PK

从古老神话中对世界起源的幻想,到如今科学家们在实验室里对虚拟世界的构建,人类探索世界生成奥秘的脚步从未停歇。如今,随着人工智能和计算机图形学的深度融合,我们已站在一个全新的起点,能够以前所未有的精度和效率去…...

seaborn库详解

Seaborn 是一个基于 Python 的统计数据可视化库,它建立在 matplotlib 之上,旨在提供更高级、更美观、更具统计意义的可视化功能。 CONTENT 1. 单变量分布可视化功能代码 2. 双变量联合分布可视化功能代码 3. 分类数据柱状图可视化功能代码 4. 箱线图可视…...

UNACMS PHP对象注入漏洞复现(CVE-2025-32101)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 前言…...

应用篇02-镜头标定(上)

本节主要介绍相机的标定方法,包括其内、外参数的求解,以及如何使用HALCON标定助手实现标定。 计算机视觉——相机标定(Camera Calibration)_摄像机标定-CSDN博客 1. 原理 本节介绍与相机标定相关的理论知识,不一定全,可以参考相…...

游戏引擎学习第230天

回顾并为今天的内容定下基调 今天是我们进行“排序”工作的第二天。昨天我们在渲染器中实现了排序功能。这其实是从一开始就知道必须做的事情,只是一直没有合适的时机。而昨天终于迎来了这个时机,不知道为什么,可能就是突然有了冲动和想法&a…...

3.串口通信之SPI

—>1.串口通信之UART见这篇<— —>2.串口通信之IIC见这篇<— 1.SPI特点 SPI&#xff08;Serial Peripheral Interface)即串行外设接口&#xff0c;有4条总线&#xff0c;分别是SCLK(SPI Clock)&#xff0c;MISO(Master Input Slave Output)&#xff0c;MOSI(Mast…...

无人机姿态稳定与动态控制模块概述!

一、设计难点 1. 动态算力需求与硬件能力的不匹配** 无人机边缘计算设备通常受限于体积和重量&#xff0c;导致其计算单元&#xff08;如CPU、GPU&#xff09;的算力有限&#xff0c;难以应对突发的高负载任务&#xff08;如实时图像处理、AI推理&#xff09;。 挑战&am…...

【shell】终端文本的颜色和样式打印

在Shell脚本中&#xff0c;\033[XXm 是 ANSI转义序列&#xff0c;用于控制终端文本的颜色和样式。以下是完整的颜色和样式代码列表&#xff1a; 1. 基本格式 echo -e "\033[CODEm你的文本\033[0m"\033[&#xff1a;转义序列开始&#xff08;\e[ 或 \x1b[ 等效&#…...

模型加载常见问题

safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooLarge 问题代码&#xff1a; model AutoModelForVision2Seq.from_pretrained( "/data-nvme/yang/Qwen2.5-VL-32B-Instruct", trust_remote_codeTrue, torch_dtypetorc…...

HCIA-Access V2.5_16_3_数据业务维护

查询ONT上的业务配置 查询ONU上的业务配置 查询OLT上网业务 查询上网业务流量 查询上网业务相关MAC地址 删除故障ONT 删除故障ONU...

Java设计开发商城抢票功能

在开发一个商城抢购功能时&#xff0c;需要考虑几个关键方面&#xff0c;包括并发控制、数据一致性、用户体验以及系统的可扩展性。下面我将通过一个简单的步骤指南来介绍如何设计这样一个功能。 1. 需求分析 首先&#xff0c;明确抢购功能的需求&#xff1a; 限制购买数量。…...

【APM】Build an environment for Traces, Metrics and Logs of App by OpenTelemetry

系列文章目录 此系列文章介绍如何搭建Observability&#xff08;可观测性&#xff09;环境(Opentelemetry-Collector、Tempo、Prometheus、Loki和Grafana)&#xff0c;以及应用。 【APM】Observability Solution 【APM】Build an environment for Traces, Metrics and Logs …...

全自动驾驶(FSD,Full Self-Driving)自动驾驶热点技术的成熟之处就是能判断道路修复修路,能自动利用类似“人眼”的摄像头进行驾驶!值得学习!

全自动驾驶&#xff08;FSD&#xff0c;Full Self-Driving&#xff09;软件是自动驾驶领域中的热点技术&#xff0c;其核心目标是实现车辆在各种复杂交通环境下的安全、稳定、高效自动驾驶。FSD软件的技术核心涉及多个方面的交叉技术&#xff0c;下面将详细分析说明其主要核心技…...

需要处理哪些响应数据?

在调用淘宝商品搜索 API 时&#xff0c;响应数据通常是一个 JSON 对象&#xff0c;包含了搜索结果的详细信息。以下是需要处理的主要响应数据字段及其说明&#xff1a; 响应数据结构 示例 JSON 数据 JSON {"code": "0","errorMessage": &quo…...

【NLP 63、大模型应用 —— Agent】

人与人最大的差距就是勇气和执行力&#xff0c;也是唯一的差距 —— 25.4.16 一、Agent 相关工作 二、Agent 特点 核心特征&#xff1a; 1.专有场景&#xff08;针对某个垂直领域&#xff09; 2.保留记忆&#xff08;以一个特定顺序做一些特定任务&#xff0c;记忆当前任务的前…...

Windows 图形显示驱动开发-WDDM 1.2功能—Windows 8 中的 DirectX 功能改进(三)

一、与目标无关的光栅化 (TIR) 独立于目标的光栅化 (TIR) 为涉及结构化图形的高质量抗锯齿的 Direct2D 使用方案提供高性能抗锯齿路径。 TIR 使 Direct2D 能够将光栅化步骤从 CPU 移动到 GPU&#xff0c;同时保留 Direct2D 抗锯齿语义和质量。 使用此功能&#xff0c;软件层可…...

总结【过往部分项目经历二(计算机图形学方向)】

过往部分项目经历二 1.加强杆自动生成算法2.牙龈线序列批量算法3.光伏多阵列排布算法 1.加强杆自动生成算法 介绍&#xff1a; 主要用于牙科正畸定制化应用。采用纯数字化技术&#xff0c;一键导入加强杆后&#xff0c;自动摆放、加强杆结构设计、网格重建、接触部分自动定位、…...

鸿蒙智行多款重磅新品发布,开启智慧出行新篇章

4月16日&#xff0c;鸿蒙智行新品发布会在上海隆重举办。问界M8、问界新M7全新配色、享界S9增程版上市&#xff1b;尊界S800内饰设计公布&#xff1b;SAIC尚界品牌首次官宣。 本次发布会后&#xff0c;鸿蒙智行将在4月17日举办智界品牌之夜&#xff0c;携手用户共同探索未来出…...

冰川流域提取分析——ArcGIS pro

一、河网提取和流域提取视频详细GIS小熊 || 6分钟学会水文分析—河网提取&#xff08;以宜宾市为例&#xff09;_哔哩哔哩_bilibili 首先你要生成研究区域DEM&#xff0c;然后依次是填洼→流向→流量→栅格计算器→河网分级→栅格河网矢量化&#xff08;得到河网.shp&#xff…...

SpringBoot——配置文件

目录 前言 1.参数配置化 1.1使用application.properties 2.yml配置文件 3.ConfigurationProperties 3.1ConfigurationProperties 4.总结 前言 我们在配置一个类的对象属性时如果我们直接写在类里就属于硬编码&#xff0c;如果我们在做项目时每设计到一个第三方服务就将其…...

Lambda 函数与 peek 操作的使用案例

Lambda 函数和 peek 操作是 Java 8 Stream API 中非常有用的特性&#xff0c;下面我将介绍它们的使用案例。 Lambda 函数使用案例 Lambda 表达式是 Java 8 引入的一种简洁的匿名函数表示方式。 集合操作 List<String> names Arrays.asList("Alice", "B…...

Java 中常用队列用法详解

Java 中常用队列用法详解 在Java编程中&#xff0c;队列是一种非常重要的数据结构&#xff0c;广泛应用于任务调度、消息传递以及多线程通信等场景。以下将详细介绍几种常用的Java队列及其使用方法。 1. Queue 接口概述 Queue 是Java集合框架中的一个接口&#xff0c;它定义…...

IoT FEM射频前端模组芯片(2.4G PA)三伍微电子GSR2401 兼容替代RFX2401

型号&#xff1a;GSR2401应用&#xff1a;适用于蓝牙&#xff08;BT&#xff09;、ZigBee及物联网&#xff08;IoT&#xff09;设备 功能&#xff1a;集成了功率放大器&#xff08;PA&#xff09;、开关&#xff08;Switch&#xff09;和低噪声放大器&#xff08;LNA&#xff…...

android如何在生产环境中做到详实的日志收集而不影响性能?

在Android应用的生命周期中,日志收集贯穿于开发、测试到生产环境的每一个阶段。特别是在生产环境中,当应用部署到成千上万的用户设备上时,开发者无法直接访问用户的运行环境,也无法像在开发阶段那样通过调试工具实时查看代码执行情况。这时,日志就成为连接开发者与用户设备…...

深入解析 Linux 系统中的动静态库:从原理到实践

引言 在 Linux 开发中&#xff0c;动态库&#xff08;.so&#xff09;和静态库&#xff08;.a&#xff09;如同软件开发的“乐高积木”&#xff0c;它们将代码模块化&#xff0c;提高复用性并优化系统资源。当你在终端输入 ls 时&#xff0c;背后可能依赖了数十个动态库&#…...

Django视图(未分离)

ListView、DetailView、CreateView、UpdateView 和 DeleteView 是 Django 框架中基于类的通用视图&#xff08;Class-Based Generic Views&#xff09; 配置 URL 路由 在 urls.py 中为这些视图配置路由&#xff1a; from django.urls import path from .views import (PostLis…...

0基础 | 开发环境 |51单片机编译环境 Keil C251和C51,STM32的编译环境Keil 5 MDK-ARM

51单片机编译环境 Keil C51 简介&#xff1a;Keil C51是Keil Software公司&#xff08;现已被ARM收购&#xff09;专门为8051微控制器家族开发的编译器&#xff0c;它将标准C语言与8051单片机硬件特性相结合&#xff0c;让开发者能够用C语言高效地开发51单片机应用程序。特点 …...

Python内置函数---all()

Python内置函数 all() 用于判断可迭代对象中的所有元素是否都为真值&#xff08;Truthy&#xff09;&#xff0c;是逻辑判断的重要工具。 1. 基本语法 all(iterable) 参数&#xff1a; iterable 必须为可迭代对象&#xff08;如列表、元组、集合、字典的值等&#xff09;。…...

Windows系统安装RustDesk Server的详细步骤和客户端设置

Windows系统安装RustDesk Server的详细步骤 在Windows系统上安装RustDesk Server涉及几个关键步骤,包括安装必要的依赖、下载RustDesk Server程序、配置并启动服务。以下是详细的步骤: 1. 安装Node.js和PM2 RustDesk Server的某些版本可能需要Node.js环境来运行,而PM2是一…...

路由过滤实验

实验拓扑以及要求 此实验总结 1.ip-prefix 拒绝192.168.4.1 32,这样写的话并不会匹配192.168.4.1 32,需要加上范围less-eq 32,也就是说,192.168.4.1 32只是规则的范围,匹配还是得写范围 2.router-policy适合用在边界路由器引入 filter-policy都可以用 配置IP 配置ospf,rip …...

数据结构学习笔记 :栈、队列与表达式转换详解

目录 栈&#xff08;Stack&#xff09; 1.1 顺序存储实现 1.2 链式存储实现队列&#xff08;Queue&#xff09; 2.1 顺序存储实现 2.2 链式存储实现中缀表达式转后缀表达式后缀表达式计算总结与应用场景 一、栈&#xff08;Stack&#xff09; 栈是一种**后进先出&#xff08;…...

项目优化中ini配置文件解析器

一、项目背景 在停车管理项目中不同道闸口的终端配置可能不同&#xff0c;如靠近居民楼的道闸终端LED的语音播报音量和靠近马路的道闸门口不同&#xff1b;不同终端道闸锁闸时间也可能不同&#xff0c;诸如此类放在数据库中&#xff0c;不同的终端在启动时必须先连接到数据库才…...

【FPGA】【DE2-115】DDS信号发生器设计

目录 一、基本概述 1.1 DDS简介 1.2 DDS工作原理 1.2.1 核心组成部分 1.2.2 工作流程 1.2.3 输出频率计算 1.3 常见的RAM、ROM、FIFO等IP核的参数设置和调用过程 1.3.1 RAM IP核的参数设置和调用过程 1.3.2 ROM IP核的参数设置和调用过程 1.3.3 FIFO IP核的参数设置和…...

使用 OpenRewrite 简化 Java 和 SpringBoot 迁移

大家好&#xff0c;这里是架构资源栈&#xff01;点击上方关注&#xff0c;添加“星标”&#xff0c;一起学习大厂前沿架构&#xff01; 移民的挑战 随着 Spring Boot 2.x 等旧版本即将到期且不再获得支持&#xff0c;迁移到较新版本对于安全性、兼容性和性能改进至关重要。但…...

电脑怎么设置锁屏密码 分享详细设置教程

电脑不仅仅是工作的工具&#xff0c;更是存储着大量个人信息和重要数据的私人空间。设置电脑锁屏密码是保护这些信息&#xff0c;免受未经授权访问的基本安全措施之一。那么&#xff0c;电脑怎么锁屏密码呢&#xff1f;下面便为大家介绍在一些不同操作系统中怎么设置电脑锁屏密…...

【Netty篇】Handler Pipeline 详解

目录 一、 Handler & Pipeline——流水线上的“特种部队”与“生产线”1、 ChannelHandler —— 流水线上的“特种兵”&#x1f46e;‍♂️2、 ChannelPipeline —— 生产线上的“接力赛跑”&#x1f3c3;‍♀️&#x1f3c3;‍♂️ 二、 代码实例1、 服务端代码示例2、 客…...

Postman实现接口测试(附项目实战)

Postman实现接口测试&#xff08;附项目实战&#xff09; Postman实现接口测试 掌握如何安装Postman 掌握Postman的基本用法 掌握全局变量与环境变量 掌握Postman断言和关联 掌握如何读取外部文件实现参数化 掌握如何使用Newman生成HTML测试报告 1.Postman介绍和安装 Postman是…...

从零上手GUI Guider学习LVGL——Button

视频教程请关注我b站&#xff1a;同学_好好学习&#xff0c;这里只是做相应的笔记文稿 从零上手GUI Guider学习LVGL——Buttton 前言&#xff1a; 首先我们为什么要学习LVGL设计工具呢&#xff1f; 1 降低开发难度 2 提高开发效率 所以我们需要学习一款合适的设计工具 在b站很少…...

软件工程知识体系全面梳理

一、软件工程概述 1. 软件工程基本概念 定义&#xff1a;应用系统化、规范化、可量化的方法开发、运行和维护软件的学科 目标&#xff1a;提高软件质量、降低开发成本、控制开发周期 三要素&#xff1a;方法、工具、过程 2. 软件生命周期 可行性分析 → 需求分析 → 设计 …...

操作教程|通过DataEase制作MaxKB系统数据大屏

MaxKB&#xff08;Max Knowledge Brain&#xff09;是一款强大易用的企业级AI助手&#xff0c;支持RAG检索增强生成、工作流编排、MCP工具调用能力&#xff0c;目前正在被广泛应用于智能客服、企业内部知识库、学术研究与教育等场景。MaxKB可以帮助用户快速搭建面向不同应用场景…...

关于webpack的知识点

一、什么是webpack?它的核心概念是什么&#xff1f; webpack是现代JavaScript应用程序的打包工具 它的核心概念包括&#xff1a; 入口输出loaderplugin(插件)模式模块依赖图 二、webPack与Grunt\Grulp有什么区别&#xff1f; 首先Grunt/Gulp是任务运行器&#xff0c;用来实现流…...

Linux系统中的 sudo 权限会导致环境变量失效。

标题为什么 sudo 会破坏 配置的环境变量&#xff1f; 权限切换&#xff1a;sudo 以 root 用户 身份执行命令&#xff0c;root 用户的环境变量和当前用户&#xff08;user&#xff09;的环境变量是隔离的。 环境变量丢失&#xff1a;nvm 依赖的 PATH、等环境变量是通过用户 She…...

目标分割模型优化自身参数都是梯度下降算法吗?

在计算机视觉的深度学习任务中&#xff0c;诸如 CNN、FCN、U-Net、DeepLab 系列模型已成为图像分类与图像分割任务的核心架构。它们在网络结构和任务上有所差异&#xff0c;但是否共享同一种优化机制&#xff1f;是否都使用梯度下降&#xff1f;优化过程中又有什么本质区别&…...