千家信息网

Python怎么对文件进行加密

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容介绍了"Python怎么对文件进行加密"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Pyth
千家信息网最后更新 2025年12月01日Python怎么对文件进行加密

本篇内容介绍了"Python怎么对文件进行加密"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Python 中的一个有用的基本加密库就叫做 cryptography 。它既是一个"安全"方面的基础库,也是一个"危险"层。"危险"层需要更加小心和相关的知识,并且使用它很容易出现安全漏洞。在这篇介绍性文章中,我们不会涵盖"危险"层中的任何内容!

cryptography 库中最有用的高级安全功能是一种 Fernet 实现。Fernet 是一种遵循实践的加密缓冲区的标准。它不适用于非常大的文件,如千兆字节以上的文件,因为它要求你一次加载要加密或解密的内容到内存缓冲区中。

Fernet 支持 对称(symmetric)(即 密钥(secret key))加密方式*:加密和解密使用相同的密钥,因此必须保持安全。

生成密钥很简单:

>>> k = fernet.Fernet.generate_key()  >>> type(k)  

这些字节可以写入有适当权限的文件,在安全的机器上。

有了密钥后,加密也很容易:

>>> frn = fernet.Fernet(k)  >>> encrypted = frn.encrypt(b"x marks the spot")  >>> encrypted[:10]  b'gAAAAABb1'

如果在你的机器上加密,你会看到略微不同的值。不仅因为(我希望)你生成了和我不同的密钥,而且因为 Fernet 将要加密的值与一些随机生成的缓冲区连接起来。这是我之前提到的"实践"之一:它将阻止对手分辨哪些加密值是相同的。

解密同样简单:

>>> frn = fernet.Fernet(k)  >>> frn.decrypt(encrypted)  b'x marks the spot'

请注意,这仅加密和解密字节串。为了加密和解密文本串,通常需要对它们使用 UTF-8 进行编码和解码。

20 世纪中期密码学最有趣的进展之一是 公钥(public key)加密。它可以在发布加密密钥的同时而让解密密钥保持保密。例如,它可用于保存服务器使用的 API 密钥:服务器是可以访问解密密钥的一方,但是任何人都可以保存公共加密密钥。

虽然 cryptography 没有任何支持公钥加密的安全功能,但 PyNaCl 库有。PyNaCl 封装并提供了一些很好的方法来使用 Daniel J. Bernstein 发明的 NaCl 加密系统。

NaCl 始终同时 加密(encrypt)和 签名(sign)或者同时 解密(decrypt)和 验证签名(verify signature)。这是一种防止 基于可伸缩性(malleability-based)的方法,其中不法分子会修改加密值。

加密是使用公钥完成的,而签名是使用密钥完成的:

>>> from nacl.public import PrivateKey, PublicKey, Box  >>> source = PrivateKey.generate()  >>> with open("target.pubkey", "rb") as fpin:  ... target_public_key = PublicKey(fpin.read())  >>> enc_box = Box(source, target_public_key)  >>> result = enc_box.encrypt(b"x marks the spot")  >>> result[:4]  b'\xe2\x1c0\xa4'

解密颠倒了角色:它需要私钥进行解密,需要公钥验证签名:

>>> from nacl.public import PrivateKey, PublicKey, Box  >>> with open("source.pubkey", "rb") as fpin: ... source_public_key = PublicKey(fpin.read())  >>> with open("target.private_key", "rb") as fpin:  ... target = PrivateKey(fpin.read())  >>> dec_box = Box(target, source_public_key)  >>> dec_box.decrypt(result)  b'x marks the spot'

PocketProtector 库构建在 PyNaCl 之上,包含完整的密钥管理方案。

"Python怎么对文件进行加密"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

加密 密钥 安全 文件 公钥 内容 危险 同时 字节 知识 缓冲区 生成 缓冲 不同 相同 功能 文章 方法 更多 有用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 linux服务器访问图片文件 共享图书软件开发价格 海信深圳软件开发 9i数据库是什么 爬取重复数据库 瓷都取名字软件开发 从事网络安全违法行动拘留多久 春节期间网络安全保障方案 计算机网络技术属于哪一类 以下哪些法律在发生网络安全 福建本地软件开发服务价格 河北本地软件开发费用 war包需要数据库支持 银川警示教育展厅软件开发 最新软件开发模型有哪些 学软件开发需要学进制吗 网络安全监测预警应用研究 sql数据库中怎么添加空格 企业2021年网络安全预算 中国互联网数字科技 技术开发合同包括软件开发吗 文本的数据库怎么设置密码 ace动漫远程服务器 网络技术公司会议服务 宁波养老这块软件开发公司排名 东华软件数据库信息审计系统 互联网在线数据库实时 新进员工 网络安全培训意识 虎牙星辉洪荒服务器怎么进 腾讯云服务器哪里看id
0