image

加密你的数据并使其免受攻击者的攻击。

密码学俱乐部的第一条规则是:永远不要自己 发明 密码系统。密码学俱乐部的第二条规则是:永远不要自己 实现 密码系统:在现实世界中,在 实现 以及设计密码系统阶段都找到过许多漏洞。

Python学习交流群:1004391443,这里是python学习者聚集地,有大牛答疑,有资源共享!小编也准备了一份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加密库用哪个好_Python的加密库入门!相关推荐

  1. python第三方库使用文档_python 的第三方库的使用

    我们写python代码的时候往往需要用第三方的库文件,Python强大的原因就是有大量的功能各异的第三方库.因此学会如何使用第三方库很有必要. 除了python官方自带的模块外,大部分第三方库是需要先 ...

  2. python标准库os的方法_Python中标准库OS的常用方法总结大全

    前言 我们经常会与文件和目录打交道,对于这些操作python提供了一个os模块,里面包含了很多操作文件和目录的函数.在写一些系统脚本或者自动化运维脚本的时候经常会用到这个 os 库,所以这里做个整理, ...

  3. python接口测试之requests详解_Python接口测试-requests库

    一.requests库 Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量 ...

  4. python中time库是什么意思_python中time库的time.time()函数的作用是什么

    python中time库的time.time()函数的作用是什么? 作用:Python time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数). time()方法语法:time. ...

  5. python xlrd读取文件报错_python中xlrd库如何实现文件读取?

    俗话说得好,技多不压身,虽然我们已经掌握了多种可以实现读取文件的方式,但是丝毫不影响我们要学会精益求精,他说学习文件读取的奥秘,况且,数据分析是十分重要的,一切的代码运行,总归都是要服务于数据,好啦, ...

  6. python处理一亿条数据_Python基础数据处理库

    Numpy 简介 import numpy as np Numpy是应用Python进行科学计算的基础库.它的功能包括多维数组.基本线性代数.基本统计计算.随机模拟等.Numpy的核心功能是ndarr ...

  7. 用python和sympy库解决方程组问题_Python语言 SymPy库数学方程问题——线性方程组篇...

    本文主要向大家介绍了Python语言 SymPy库数学方程问题--线性方程组篇,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 这里我的本机的操作系统是 Ubuntu 14.04  ...

  8. python的random模块怎么写_Python常用标准库之random模块

    一.概述 在我们日常写代码的过程中,经常需要产生随机数,Python为我们提供了random库,该模块实现了各种分布的伪随机数生成器,本文主要讲解其常用方法,更多详细内容请移步:Random官方文档. ...

  9. python中的turtle如何运行_python中turtle库的简单使用教程

    python的turtle库的简单使用 Python的turtle库是一个直观有趣的图形绘制函数库,是python的标准库之一. 一.绘图坐标体系 turtle库绘制图形的基本框架:通过一个小海龟在坐 ...

最新文章

  1. Android 内容观察者 ContentObserver 类
  2. html底部沉底显示,Footer部分永远沉底。
  3. 题目1465:最简真分数
  4. C++:读写二进制文件到double数组
  5. 7.7-9 chage、chpasswd、su
  6. Java是先难后易吗_在解决问题的时候,是先难后易还是先易后难?
  7. 谷歌浏览器网页翻译失效,无法翻译成中文,且谷歌翻译api报404问题
  8. datavideo切换台说明书_datavideo洋铭 SE-650 HD4通道切换台,高清导播切换台
  9. python 导入的nan怎么解决_如何处理python里的Nan和None
  10. 基于linux的软件测试,基于linux的Web服务器性能测试
  11. 文章本天成 妙手偶得之 两句三年得 一吟双泪流
  12. WinSock网络编程基础(1)
  13. 为什么ASO很重要?
  14. 在比特大陆SE5边缘计算盒上运行PaddleOCR轻量级预测模型
  15. 福建厦门计算机春季高考考哪些学校,福建省2020年春季高考总分多少?春季高考本科院校有哪些?...
  16. zxr10交换机配置手册vlan_中兴ZXR10配置说明
  17. php考研难么,版主2006年考研经验谈:考研并不难
  18. 56岁潘石屹下定决心学Python,60多岁程序语言之父们还在敲代码,你还敢懈怠吗?
  19. Conway’s Game of Life中看C++SSE2并行化计算
  20. C++线段树运用进阶:【高级数据结构】自动售票系统

热门文章

  1. 只想安安静静的做个程序员
  2. 六层感知神经网络系统
  3. poj2774 sa模版
  4. 自动化测试和测试自动化的区别
  5. 【翻译】关于回调地狱
  6. Python时间戳转时间
  7. Linux下修复修改profile文件导致命令不用可的解决方法
  8. C++的常量、指针、引用
  9. JAVA(利用jsp+javabean+servlet)实现简易计算器
  10. 抠图+修图+调色+合成+特效Photoshop核心应用5项修炼pdf