From 579c1729c92cd457b81a41db7aa562df19dfbefc Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Thu, 9 May 2019 10:28:33 +0800 Subject: [PATCH 1/2] PRF:20190408 Getting started with Python-s cryptography library.md @geekpi --- ...rted with Python-s cryptography library.md | 36 +++++++++---------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/translated/tech/20190408 Getting started with Python-s cryptography library.md b/translated/tech/20190408 Getting started with Python-s cryptography library.md index a9e87bf470..3f90c319dd 100644 --- a/translated/tech/20190408 Getting started with Python-s cryptography library.md +++ b/translated/tech/20190408 Getting started with Python-s cryptography library.md @@ -1,29 +1,29 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: 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 支持对称symmetric(即密钥secret key)加密方式*:加密和解密使用相同的密钥,因此必须保持安全。 生成密钥很简单: - ``` >>> 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 世纪中期密码学最有趣的进展之一是公钥public key加密。它可以在发布加密密钥的同时而让*解密密钥*保持保密。例如,它可用于保存服务器使用的 API 密钥:服务器是唯一可以访问解密密钥的一方,但是任何人都可以保存公共加密密钥。 -虽然 **cryptography** 没有任何公钥加密_安全_原语,但 [**PyNaCl**][4] 库有。PyNaCl 封装并提供了一些很好的方法来使用 Daniel J. Bernstein 发明的 [**NaCl**][5] 加密系统。 +虽然 cryptography 没有任何支持公钥加密的*安全*功能,但 [PyNaCl][4] 库有。PyNaCl 封装并提供了一些很好的方法来使用 Daniel J. Bernstein 发明的 [NaCl][5] 加密系统。 -NaCl 始终同时_加密_和_签名_或者同时_解密_和_验证签名_。这是一种防止基于可伸缩性的攻击的方法,其中攻击者会修改加密值。 +NaCl 始终同时加密encrypt签名sign或者同时解密decrypt验证签名verify signature。这是一种防止基于可伸缩性malleability-based的攻击的方法,其中攻击者会修改加密值。 加密是使用公钥完成的,而签名是使用密钥完成的: - ``` >>> 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/) 荣誉推出 From e74f589e5ee014b4785f9a19aee5e2befd249107 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Thu, 9 May 2019 10:29:05 +0800 Subject: [PATCH 2/2] PUB:20190408 Getting started with Python-s cryptography library.md @geekpi https://linux.cn/article-10833-1.html --- ...0408 Getting started with Python-s cryptography library.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename {translated/tech => published}/20190408 Getting started with Python-s cryptography library.md (98%) 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 98% 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 3f90c319dd..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,8 +1,8 @@ [#]: collector: (lujun9972) [#]: translator: (geekpi) [#]: reviewer: (wxy) -[#]: publisher: ( ) -[#]: url: ( ) +[#]: 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)