python3加密解密模块 cryptography
2023-09-14 09:06:38 时间
cryptography 的目标是成为“人类易于使用的密码学包cryptography for humans”,就像 requests 是“人类易于使用的 HTTP 库HTTP for Humans”一样。这个想法使你能够创建简单安全、易于使用的加密方案。如果有需要的话,你也可以使用一些底层的密码学基元,但这也需要你知道更多的细节,否则创建的东西将是不安全的。
如果你使用的 Python 版本是 3.5, 你可以使用 pip 安装,如下:
1
|
pip install cryptography |
你会看到 cryptography 包还安装了一些依赖包(LCTT 译注:如 libopenssl-devel)。如果安装都顺利,我们就可以试着加密一些文本了。让我们使用 Fernet 对称加密算法,它保证了你加密的任何信息在不知道密码的情况下不能被篡改或读取。Fernet 还通过 MultiFernet 支持密钥轮换。下面让我们看一个简单的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
>>> from cryptography.fernet import Fernet >>> cipher_key = Fernet.generate_key() >>> cipher_key b 'APM1JDVgT8WDGOWBgQv6EIhvxl4vDYvUnVdg-Vjdt0o=' >>> cipher = Fernet(cipher_key) >>> text = b 'My super secret message' >>> encrypted_text = cipher.encrypt(text) >>> encrypted_text (b 'gAAAAABXOnV86aeUGADA6mTe9xEL92y_m0_TlC9vcqaF6NzHqRKkjEqh4d21PInEP3C9HuiUkS9f' b '6bdHsSlRiCNWbSkPuRd_62zfEv3eaZjJvLAm3omnya8=' ) >>> decrypted_text = cipher.decrypt(encrypted_text) >>> decrypted_text b 'My super secret message' |
首先我们需要导入 Fernet,然后生成一个密钥。我们输出密钥看看它是什么样儿。如你所见,它是一个随机的字节串。如果你愿意的话,可以试着多运行 generate_key 方法几次,生成的密钥会是不同的。然后我们使用这个密钥生成 Fernet 密码实例。
现在我们有了用来加密和解密消息的密码。下一步是创建一个需要加密的消息,然后使用 encrypt 方法对它加密。我打印出加密的文本,然后你可以看到你再也读不懂它了。为了解密出我们的秘密消息,我们只需调用 decrypt 方法,并传入加密的文本作为参数。结果就是我们得到了消息字节串形式的纯文本。
相关文章
- python2 和 python3 常见差异及兼容方式梳理
- python3.x默认使用UTF-8编码_pycharm怎么debug
- python3 zipfile模块_Python ZipFile模块详解[通俗易懂]
- 使用ResNet101作为预训练模型训练Faster-RCNN-TensorFlow-Python3-master[通俗易懂]
- python3_高级特性
- windows 下使用 python3 复制拷贝图片到剪切板(剪贴板、粘贴板)
- python3自定义异常
- python3 开发面试题(生成列表)6.1详解编程语言
- python3开发进阶-Django框架中form的查看校验方法is_valid()的源码,自定义验证方法详解编程语言
- python3开发进阶-Django框架的自带认证功能auth模块和User对象的基本操作详解编程语言
- Python3 pip出现Fatal error in launcher: Unable to create process using ‘”‘详解编程语言
- Python3 实现(wxpy)用微信自动定时给朋友定时推广详解编程语言
- Python3.x:logging模块对运行过程记录详解编程语言
- python3:面向对象(多态和继承、方法重载及模块)详解编程语言