当前位置: 首页 > 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版)(博文视点出品)电子工业出版社★★★★★
http://www.lqws.cn/news/149095.html

相关文章:

  • 【EN 18031】访问控制机制(ACM - 3):儿童玩具的防护盾
  • 墨者学院-密码学实训隐写术第二题
  • 数字孪生在建设智慧城市中可以起到哪些作用或帮助?
  • Java八股文——集合「概念篇」
  • mime嗅探的默认行为及Markdown文件响应格式
  • 【threejs】每天一个小案例讲解
  • OpenWRT prplOS-- ubus命令配置参数
  • 结合Jenkins、Docker和Kubernetes等主流工具,部署Spring Boot自动化实战指南
  • 老年生活照护实训室建设规划:照护质量评估与持续改进实训体系
  • 酷黑NBA足球赛事直播源码体育直播M39模板赛事源码
  • 02 Deep learning神经网络的编程基础 逻辑回归--吴恩达
  • calico/node is not ready: BIRD is not ready: BGP not established with xxx
  • 使用 Docker Compose 安装 PostgreSQL 16
  • 网络安全面试题目(无答案)
  • Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(七):消息框交互功能添加
  • 招工招聘系统开发,重塑人才招聘新格局
  • Life:Internship finding
  • 【6.2-6.9学习周报】
  • SpringBoot EhCache 缓存
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice在线编辑word文件保存数据同时保存文件
  • NVM!(可以快速替换你的node版本)
  • 无人机军用与民用技术对比分析
  • 购物商城网站 Java+Vue.js+SpringBoot,包括商家管理、商品分类管理、商品管理、在线客服管理、购物订单模块
  • 神经网络与深度学习 网络优化与正则化
  • vue3+ts+vite:详细、完整的 tsconfig.json 示例 / 常见配置项及其用途
  • 在word中点击zotero Add/Edit Citation没有反应的解决办法
  • 【HTML】HTML 与 CSS 基础教程
  • 低功耗高安全:蓝牙模块在安防系统中的应用方案
  • python版若依框架开发:项目结构解析
  • 使用Node.js分片上传大文件到阿里云OSS