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

Python cryptography【密码库】库功能与使用指南

边写代码零食不停口 盼盼麦香鸡味块 、卡乐比(Calbee)薯条三兄弟 独立小包、好时kisses多口味巧克力糖、老金磨方【黑金系列】黑芝麻丸

边写代码边贴面膜 事业美丽两不误 DR. YS 野森博士+【AOUFSE/澳芙雪特证】377专研美白淡斑面膜组合 优惠劵

别光顾写代码更要多喝茶水,提神有营养 六安瓜片茶叶茶香二级200g 2025年新茶雨前盒装自己喝

让AI成为我们的得力助手:《用Cursor玩转AI辅助编程——不写代码也能做软件开发》


cryptography 是 Python 中一个功能强大且广泛使用的密码学库,由 PyCA (Python Cryptographic Authority) 团队维护。它提供了安全的底层密码学原语和高层易用的「配方」(recipes),旨在替代不安全的旧库(如 pycrypto)。以下是关键特性与使用示例:


核心功能

1. 对称加密(AES 等)
from cryptography.fernet import Fernet# 生成密钥
key = Fernet.generate_key()
cipher = Fernet(key)# 加密
encrypted = cipher.encrypt(b"Secret message")# 解密
decrypted = cipher.decrypt(encrypted)  # b"Secret message"
2. 非对称加密(RSA)
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization# 生成密钥对
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
public_key = private_key.public_key()# 序列化公钥
pem = public_key.public_bytes(encoding=serialization.Encoding.PEM,format=serialization.PublicFormat.SubjectPublicKeyInfo
)
3. 数字签名
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding# 签名
signature = private_key.sign(b"Data to sign",padding.PSS(mgf=padding.MGF1(hashes.SHA256()),salt_length=padding.PSS.MAX_LENGTH),hashes.SHA256()
)# 验证签名
public_key.verify(signature,b"Data to sign",padding.PSS(...),  # 与签名相同参数hashes.SHA256()
)
4. 哈希函数(SHA-256 等)
from cryptography.hazmat.primitives import hashesdigest = hashes.Hash(hashes.SHA256())
digest.update(b"data")
result = digest.finalize()  # 32字节哈希值
5. 密钥派生(KDF)
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.primitives import hasheskdf = PBKDF2HMAC(algorithm=hashes.SHA256(),length=32,          # 输出密钥长度salt=b"salt_value", # 随机盐值iterations=100000   # 迭代次数增强安全性
)
key = kdf.derive(b"password")  # 派生密钥
6. X.509 证书操作
from cryptography import x509
from cryptography.x509.oid import NameOID# 创建自签名证书
subject = issuer = x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US"),x509.NameAttribute(NameOID.COMMON_NAME, "example.com")
])
cert = x509.CertificateBuilder().subject_name(subject).issuer_name(issuer).public_key(public_key).serial_number(x509.random_serial_number()).not_valid_before(now).not_valid_after(now + timedelta(days=365)).sign(private_key, hashes.SHA256())

安全实践

  1. 避免底层 API:优先使用高层接口(如 Fernet),它们已内置安全最佳实践。
  2. 密钥管理
    • 使用 os.urandomsecrets 模块生成随机数。
    • 通过环境变量或专用工具(如 Vault)存储密钥。
  3. 弃用警告:低层 API(hazmat)需谨慎使用,错误实现可能导致漏洞。

安装

pip install cryptography

为何选择 cryptography?

  • 安全性:基于成熟的密码学后端(如 OpenSSL、Rust)。
  • 活跃维护:定期更新修复漏洞。
  • 符合标准:支持 FIPS 140-2、NIST 等标准。
  • 丰富的文档:官方文档 提供详细指南。

注意:密码学极易因误用导致漏洞。除非必要,请使用高层 API,并参考专业安全审计。


Python 图书推荐

书名出版社推荐
Python编程 从入门到实践 第3版(图灵出品)人民邮电出版社★★★★★
Python数据科学手册(第2版)(图灵出品)人民邮电出版社★★★★★
图形引擎开发入门:基于Python语言电子工业出版社★★★★★
科研论文配图绘制指南 基于Python(异步图书出品)人民邮电出版社★★★★★
Effective Python:编写好Python的90个有效方法(第2版 英文版)人民邮电出版社★★★★★
Python人工智能与机器学习(套装全5册)清华大学出版社★★★★★

JAVA 图书推荐

书名出版社推荐
Java核心技术 第12版:卷Ⅰ+卷Ⅱ机械工业出版社★★★★★
Java核心技术 第11版 套装共2册机械工业出版社★★★★★
Java语言程序设计基础篇+进阶篇 原书第12版 套装共2册机械工业出版社★★★★★
Java 11官方参考手册(第11版)清华大学出版社★★★★★
Offer来了:Java面试核心知识点精讲(第2版)(博文视点出品)电子工业出版社★★★★★

相关文章:

  • 【Redis】类型补充
  • 墨者学院-密码学实训隐写术第二题
  • [闭源saas选项]Pinecone:为向量数据库而生的实时语义搜索引擎
  • 【网络安全】XSS攻击
  • Spring AI(10)——STUDIO传输的MCP服务端
  • MyBatis-Plus深度全解:从入门到企业级实战
  • idea json生成实体类
  • 【Git系列】如何同步原始仓库的更新到你的fork仓库?
  • Spring之事务管理方式
  • Ubuntu系统配置C++的boost库(含filesystem模块)的方法
  • 自驾总结_Prediction
  • 沉金电路板工艺解析:从原理到应用的全面指南
  • 面向开发者的提示词工程③——文本总结(Summarizing)
  • 麒麟信安系统下修改系统默认记录日志大小
  • mongodb源码分析session异步接受asyncSourceMessage()客户端流变Message对象
  • [Java恶补day16] 238.除自身以外数组的乘积
  • [蓝桥杯]全球变暖
  • 常见排序算法时间、空间复杂度总结
  • vue-19(Vuex异步操作和变更)
  • Python训练营打卡Day45
  • 免费建站模板哪个好/免费seo网站的工具
  • 中山古镇做网站/营销广告文案
  • 网站设计框架图/磁力搜索
  • 米拓企业网站管理系统/上海网站推广优化
  • 辽宁建设工程信息网昂/seo快速排名源码
  • 宿州学校网站建设/营销网络的建设有哪些