第9章 加密与标记

本章的篇幅较短,主要简单地介绍了Python标准库所提供的加密服务。本章还将简单地介绍一个名为JSON Web标记的概念,这是一个非常有趣的标准,用于表示双方之间的安全请求。

在本章中,我们将讨论下面这些主题。

  • hashlib模块。
  • secrets模块。
  • HMAC算法。
  • 使用PyJWT的JSON Web标记,它可能是目前最流行的用于处理JWT的Python库

我们先花点时间讨论加密以及它的重要性。

智能手机的用户数量越来越多。所有用户都知道用于解锁手机的PIN以及用于登录到各种应用的证书。这些应用基本涵盖了我们的日常生活,从购物到找路、从发送消息到觅友,或者查看自己的比特币钱包里自己的财富是否增值。

如果我们是应用程序的开发人员,必须非常严肃地看待安全问题。不管我们的应用看上去多么小或者多么不重要,总是应该把安全放在重要的位置。

在信息技术中,可以通过几种不同的方法实现安全,但到目前为止,最重要的方法仍然是加密。我们用计算机或手机做的任何事情都应该包含一个进行加密的层(如果没有这个层,那就非常糟糕)。我们可以在这个安全层中进行信用卡的在线支付,或者以一种安全的方式通过网络传送信息,即使信息被人拦截也不会泄密。当我们在云端备份文件时,可以在这个层中对它们进行加密。类似的例子数不胜数。

现在,本章的目的并不是告诉我们散列和加密的区别所在。关于这个主题,足足可以用一本篇幅完整的书来讲述。本章的目的是介绍如何使用Python所提供的工具创建摘要、标记,以及按照更广泛的说法,在我们需要实现与加密相关的东西时能够站在(更)安全的一边。

我们始终要记住下面这些指导原则。

  • 原则1:不要试图自行创建散列或加密函数。就是这么简单。我们应该使用已经存在的工具和函数。创建一个良好、稳固、健壮的算法进行散列或加密的难度超乎我们的想象,因此最好让专业加密人员来完成这个任务。 ...

Get Python编程入门与实战 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.