diff --git a/translated/tech/20190408 Getting started with Python-s cryptography library.md b/published/20190408 Getting started with Python-s cryptography library.md
similarity index 52%
rename from translated/tech/20190408 Getting started with Python-s cryptography library.md
rename to published/20190408 Getting started with Python-s cryptography library.md
index a9e87bf470..bc6aeb05b7 100644
--- a/translated/tech/20190408 Getting started with Python-s cryptography library.md
+++ b/published/20190408 Getting started with Python-s cryptography library.md
@@ -1,29 +1,29 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
-[#]: reviewer: ( )
-[#]: publisher: ( )
-[#]: url: ( )
+[#]: reviewer: (wxy)
+[#]: publisher: (wxy)
+[#]: url: (https://linux.cn/article-10833-1.html)
[#]: subject: (Getting started with Python's cryptography library)
[#]: via: (https://opensource.com/article/19/4/cryptography-python)
-[#]: author: (Moshe Zadka https://opensource.com/users/moshez)
+[#]: author: (Moshe Zadka https://opensource.com/users/moshez)
Python 的加密库入门
======
-加密你的数据并使其免受攻击者的攻击。
+
+> 加密你的数据并使其免受攻击者的攻击。
+
![lock on world map][1]
-密码学俱乐部的第一条规则是:永远不要自己_发明_密码系统。密码学俱乐部的第二条规则是:永远不要自己_实现_密码系统:在现实世界中,在_实现_以及设计密码系统阶段都找到过许多漏洞。
+密码学俱乐部的第一条规则是:永远不要自己*发明*密码系统。密码学俱乐部的第二条规则是:永远不要自己*实现*密码系统:在现实世界中,在*实现*以及设计密码系统阶段都找到过许多漏洞。
-Python 中的一个有用的加密原语被称为 [**cryptography**][2]。它既有“安全”原语,也有“危险”层。“危险”层需要小心和相关知识,并且使用它很容易出现安全漏洞。在这篇介绍性文章中,我们不会涵盖“危险”层中的任何内容!
+Python 中的一个有用的基本加密库就叫做 [cryptography][2]。它既是一个“安全”方面的基础库,也是一个“危险”层。“危险”层需要更加小心和相关的知识,并且使用它很容易出现安全漏洞。在这篇介绍性文章中,我们不会涵盖“危险”层中的任何内容!
-**cryptography** 中最有用的高级安全原语是 Fernet 实现。Fernet 是一种遵循最佳实践的加密缓冲区的标准。它不适用于非常大的文件,如千兆字节以上的文件,因为它要求你一次加载要加密或解密的内容到内存缓冲区中。
+cryptography 库中最有用的高级安全功能是一种 Fernet 实现。Fernet 是一种遵循最佳实践的加密缓冲区的标准。它不适用于非常大的文件,如千兆字节以上的文件,因为它要求你一次加载要加密或解密的内容到内存缓冲区中。
-
-Fernet 支持_对称_或_私钥_、密码:加密和解密使用相同的密钥,因此必须保持安全。
+Fernet 支持对称(即密钥)加密方式*:加密和解密使用相同的密钥,因此必须保持安全。
生成密钥很简单:
-
```
>>> k = fernet.Fernet.generate_key()
>>> type(k)
@@ -34,7 +34,6 @@ Fernet 支持_对称_或_私钥_、密码:加密和解密使用相同的密钥
有了密钥后,加密也很容易:
-
```
>>> frn = fernet.Fernet(k)
>>> encrypted = frn.encrypt(b"x marks the spot")
@@ -46,24 +45,22 @@ b'gAAAAABb1'
解密同样简单:
-
```
>>> frn = fernet.Fernet(k)
>>> frn.decrypt(encrypted)
b'x marks the spot'
```
-请注意,这仅加密和解密_字节串_。为了加密和解密_文本串_,通常需要对它们使用 [UTF-8][3] 进行编码和解码。
+请注意,这仅加密和解密*字节串*。为了加密和解密*文本串*,通常需要对它们使用 [UTF-8][3] 进行编码和解码。
-20 世纪中期密码学最有趣的进展之一是 _公钥_ 加密。它能在_解密密钥_保密时发布加密密钥。例如,它可用于保存服务器使用的 API 密钥:服务器是唯一可以访问解密密钥的一方,但是任何人都可以保存公共加密密钥。
+20 世纪中期密码学最有趣的进展之一是公钥加密。它可以在发布加密密钥的同时而让*解密密钥*保持保密。例如,它可用于保存服务器使用的 API 密钥:服务器是唯一可以访问解密密钥的一方,但是任何人都可以保存公共加密密钥。
-虽然 **cryptography** 没有任何公钥加密_安全_原语,但 [**PyNaCl**][4] 库有。PyNaCl 封装并提供了一些很好的方法来使用 Daniel J. Bernstein 发明的 [**NaCl**][5] 加密系统。
+虽然 cryptography 没有任何支持公钥加密的*安全*功能,但 [PyNaCl][4] 库有。PyNaCl 封装并提供了一些很好的方法来使用 Daniel J. Bernstein 发明的 [NaCl][5] 加密系统。
-NaCl 始终同时_加密_和_签名_或者同时_解密_和_验证签名_。这是一种防止基于可伸缩性的攻击的方法,其中攻击者会修改加密值。
+NaCl 始终同时加密和签名或者同时解密和验证签名。这是一种防止基于可伸缩性的攻击的方法,其中攻击者会修改加密值。
加密是使用公钥完成的,而签名是使用密钥完成的:
-
```
>>> from nacl.public import PrivateKey, PublicKey, Box
>>> source = PrivateKey.generate()
@@ -77,7 +74,6 @@ b'\xe2\x1c0\xa4'
解密颠倒了角色:它需要私钥进行解密,需要公钥验证签名:
-
```
>>> from nacl.public import PrivateKey, PublicKey, Box
>>> with open("source.pubkey", "rb") as fpin:
@@ -89,16 +85,16 @@ b'\xe2\x1c0\xa4'
b'x marks the spot'
```
-[**PocketProtector**][6] 库构建在 PyNaCl 之上,包含完整的私钥管理方案。
+最后,[PocketProtector][6] 库构建在 PyNaCl 之上,包含完整的密钥管理方案。
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/4/cryptography-python
-作者:[Moshe Zadka (Community Moderator)][a]
+作者:[Moshe Zadka][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
-校对:[校对者ID](https://github.com/校对者ID)
+校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出