Python Secret 模块 | 生成安全随机数2024 年 8 月 29 日 | 5 分钟阅读 在本教程中,我们将学习一个有趣的 Python 模块,名为 secrets。我们还将学习它的方法以及它与 random 模块的区别。它在 Python 3.6 中发布,以生成接近真正随机性的数据而闻名。我们将学习如何实现 secrets.SystemRandom() 类和 secret 模块函数。在深入探讨此主题之前,让我们简要介绍一下 secret 模块。 secret 模块介绍Python secret 模块在 Python 3.6 或更高版本中可用。它用于生成随机数以管理重要数据,例如密码、账户身份验证、安全令牌和相关秘密。我们可以生成加密强大的数据,并且生成的数据可用于 OTP(一次性密码)。 以下是一些与标准安全相关的功能的关键用法。
使用 secret 模块而不是 random 模块的原因Random 模块也可以生成随机数据,但不是非确定性数据。换句话说,通过找到用于生成数据的种子,可以轻松确定 random 模块生成的数据。它不适合安全目的。另一方面,secrets 模块是生成安全数据的绝佳方式。secrets 模块是一个加密强度高的伪随机数生成器,适用于安全敏感的应用。 现在,让我们学习它的重要方法。 类 secrets.SystemRandom此类用于使用操作系统提供的最高质量的源来生成安全随机数。它允许我们使用 random 模块的所有功能。random 模块具有相同的类 random.SystemRandom,用于生成加密安全随机数据。 让我们了解如何使用 secrets.SystemRandom 类来保护随机生成器。 示例 - 输出 Some Random Integers: 57 Secure Random Intergers within Given Range: 12 The List of Random Numbers: 48 Secure Random Sample: [48, 54, 28] Secure Float Number: 24.693838143278885 方法 secrets.choice(sequence)它是 secrets.SystemRandom 类的一个方法,它从给定的非空序列中返回随机选择的元素。让我们了解下面的示例。 示例 - 在下面的示例中,我们将生成一个八个字符的字母数字密码,其中至少包含一个 lowercase 字符、一个 uppercase 字符和三个数字。 输出 The Random Password is: 7Jfb7er2 方法 randbelow(n)此函数用于生成从给定范围 0 到 n 的安全整数。这里的 n 是独占的上界。让我们了解下面的示例。 示例 - 输出 13, 13, 1, 9, 6, 方法 randbits(K)此方法返回一个具有 k 个随机位的安全无符号整数。它用于生成将由 N 个设置位组成的随机位掩码。生成的数字比 randbelow 数字更安全。 它在位范围内生成一个随机整数。
让我们了解下面的示例。 示例 - 输出 The 4 bit number: 11 The 8 bit number: 170 The 16 bit number: 38967 The 32 bit number: 1901293963 使用 secrets 模块生成安全令牌此模块使我们能够使用多种方法生成安全令牌。它有助于应用程序生成密码重置令牌和难以猜测的 URL。我们将使用以下函数生成令牌。
示例 - 输出 b'\x07w\xe0b\xd0\xae\xb8k\x91\x95n\xbc\x04X\xbc\x8e\x03\xcd\xc5]&.]\xda\x8b*\x9d\x1d)m\x18[' b'\xfc\xdd\xaa\xe9\x8f\xa3\x96\x81\x84s\xc7\xcbw\xc7\xc05\xbc\xa6J\xbe'
示例 - 输出 ef38a198fd6f5b61c3fbe7af84f6e5702a7e76c3ecca5f30008e 2ea433c452ba4a96ddc96be7
示例 - 生成包含安全令牌的临时 URL,该 URL 难以猜测。 输出 https://mywebsite.com/reset=w0Ts0Wm6gxg 令牌应使用 32 个字节,以便令牌能够抵抗暴力攻击。我们应该根据需要使用字节大小。secrete 模块提供了 compare_digest(a,b) 函数来降低时间攻击的风险。 secrets 模块的实际应用让我们创建一个程序,我们在其中生成密码并将创建的密码发送到临时难以猜测的 URL。这样,客户端就可以使用该 URL 重置密码。 示例 - 输出 Secure pswd is: Tm/|M^6V{> You can reset your password using Reset URL Link https://users.com/user/sam/reset=17eCrjnQ6RI05EVZeLSzK9ujuc84PiO1LTd--0BdKW0 解释 - 在上面的代码中,我们生成了一个十个字符的密码,该密码包含至少一个 lowercase 字符、一个数字和一个特殊字符。为此,我们使用了 choice() 方法并将其添加到 pswd 变量中。然后我们生成了临时 URL。 结论本教程涵盖了 secrets 模块及其多种方法的基本概念。我们还使用 Python 代码实现了这些函数,python secrets 模块可帮助我们生成安全的密码和秘密 URL 或令牌。 下一个主题使用 Tkinter 创建记事本 |
Python 是一种流行的语言,提供了许多库和函数,使代码更有效、更简单。与其他编程语言一样,Python 也有一套错误和异常,包括 ImportError、CompileError、KeyError 等。Python 中的 KeyError 是什么?KeyError 是最常见的错误……
7 分钟阅读
Instagram 是当今最受欢迎的社交媒体平台,拥有数十亿用户。在当今时代,Instagram 不仅是人们可以与他人分享图片的地方,还可以利用这个平台来发挥自己的优势。一...
阅读 10 分钟
? 全局解释器锁本教程将重点介绍 Python 的一个重要主题,GIL。我们还将通过代码实现来介绍 GIL 如何影响 Python 程序的性能。在深入探讨这个主题之前,让我们对 GIL 有一个基本的了解。GIL 或全局...
阅读 4 分钟
Python 字典是一种数据结构,可以轻松编写高效的代码。由于我们可以哈希其键,因此字典数据结构在其他几种语言中是一种哈希表。一种名为哈希表的数据结构使用关联的...
阅读 4 分钟
Selenium 是一个用于自动化 Web 浏览器和测试 Web 应用程序的强大工具。它提供了广泛的方法和技术来与 Web 元素进行交互。最常用的方法之一是 find_elements_by_partial_link_text()。此方法允许您在网页上定位元素...
阅读 3 分钟
在本教程中,我们将学习 Python 中的 currying,这是一个在 Python 中比较新的概念。大多数开发者可能不熟悉这个主题。我们将解释 currying 的概念、它的用例以及如何在 Python 中实现它。让我们开始……
阅读 6 分钟
简介 Python,常被比作适应性强的瑞士军刀,在编码领域占据主导地位已有相当长的一段时间。其用户友好的语法、易于阅读和多功能性帮助它为各种应用程序提供动力,从设计网站和数据研究到...
阅读 6 分钟
使用二分查找,我们可以在 O(log(n)) 的时间复杂度内找到给定排序数组或列表中的元素,其中 n 是列表中的数字个数。现在让我们在任何枢轴旋转这个排序数组或列表。但是,我们不知道...
7 分钟阅读
在本教程中,我们将讨论提供一种简单直观的方法来转换图像并理解其背后数据的 Python 库。今天的世界充斥着数据,而图像是这些数据的主要部分。但是为了被利用……
5 分钟阅读
登录模块通用介绍:登录模块是一个软件组件或模块,负责对用户进行身份验证并允许他们访问特定的系统或应用程序。登录模块的主要目的是确保只有授权用户才能...
阅读20分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India