室友天偷看我电脑!还带着纸巾?我决定用Python保护我的秘密了!

室友天偷看我电脑!还带着纸巾?我决定用Python保护我的秘密了!,第1张

概述Python3.6版本引入了一个名为secrets的新模块,用于生成强大而安全的随机数。在本文中,我们将学习如何使用secrets模块来保护你的小秘密

Python 3.6版本引入了一个名为secrets的新模块,用于生成强大而安全的随机数。在本文中,我们将学习如何使用secrets模块来保护你的小秘密。

在以往版本的Python中,random模块提供的随机生成器是伪随机数生成器,它不具有加密安全性,因此在Python 3.6及更高版本中添加了secrets模块。

加密安全随机生成器使用同步方法生成随机数据,以确保没有两个进程可以同时获得相同的数据。

在Python 3.6之前,我们使用os.urandom()和random.SystemRandom类来加密安全随机生成器。

secrets模块是一种CSPRNG,即强加密伪随机数生成器,它用于生成在较注重安全性的应用程序中安全且有用的随机数。

您可以使用secrets模块来执行以下常见的安全相关功能:

生成随机数 密码和OTP 随机令牌 密码恢复安全URL和会话密钥

接下来,让我们来看看如何具体使用secrets模块。

一、secrets.SystemRandom类

使用 *** 作系统提供的最高质量源生成随机数的类。 使用secrets.SystemRandom类可以实现random模块的所有功能。 在secrets模块出现之前,我们通常使用random.SystemRandom来加密保护随机数据。现在使用secrets模块也可以访问同一个类,只需执行secrets.SystemRandom()。

下面的代码展示了如何使用secrets.SystemRandom类来生成安全随机数:

进群:548377875  即可获取数十套pdf!从零到实战的那种以及大量的学习资料哦!~

输出结果:

二、Python secrets模块中的常用函数

1. secrets.randbelow(n)

使用secrets.randbelow函数可以生成安全整数。 此函数返回[0,n]范围内的安全随机整数。这里n表示上限。

例如,secrets.randbelow(10)将生成一个从0到10范围内的随机整数。

输出结果:

2. secrets.choice(sequence)

此方法从非空序列返回安全的随机选择元素。 这里的序列可以是列表或字符串。

例如:

输出结果:

3. secrets.randbits(k)

此函数返回带有k个随机位的安全无符号整数。 此函数用于生成包含n位设置的随机位掩码(这与生成随机整数不同,因为不保证其中设置了n位)。 使用randbits生成的数字更安全。

它在位范围内生成随机整数:

k = 4表示从0到15的无符号整数。

k = 8表示从0到255的无符号整数。

k = 16表示从0到65,535的无符号整数。

我们来看看这个例子:

输出结果:

三、使用secrets模块生成安全口令

secrets模块提供用于生成安全口令的函数,这对于应用程序生成重置密码口令和难以猜测的URL是非常有用的。

secrets模块具有以下用于生成安全口令的函数:

1. secrets.token_bytes([nbytes=None])

返回包含字节数的安全随机字节字符串。如果未提供nbytes,则使用合理的默认值。

2. secrets.token_hex([nbytes=None])

以十六进制格式返回安全的随机文本字符串。该字符串具有nbytes随机字节,每个字节转换为两个十六进制数字。如果未提供nbytes,则使用合理的默认值。

3. secrets.token_urlsafe([nbytes=None])

返回一个安全的随机URL安全文本字符串,包含nbytes随机字节。使用此方法可生成安全且难以猜测的URL。

让我们来看下面的这个例子:

输出结果:

口令应该使用多少字节?

为了抵御暴力攻击和定时攻击,口令需要具有足够的随机性。 根据专家的说法,32字节(256位)的随机性足以抵御暴力攻击。您应该根据您的要求选择字节大小。

我们还可以使用secrets.compare_digest(a,b)减少计时攻击。为了降低计时攻击的风险,秘密模块具有compare_digest(a,b)功能。如果字符串a和b相等,则此函数返回True,否则返回False以降低计时攻击的风险。

四、Secrets使用实例

在实例中,我们生成临时密码并在临时难以猜测的URL上发送此密码,以便客户可以使用此URL重置其密码。

生成一个十个字符的字母数字密码,至少包含一个小写字符,一个大写字符,一个数字和一个特殊字符 生成临时URL

例:

输出结果:

以上便是我们今天分享的所有内容。如果您知道实现类似功能更好的做法,欢迎评论。

总结

以上是内存溢出为你收集整理的室友天偷看我电脑!还带着纸巾?我决定用Python保护我的秘密了!全部内容,希望文章能够帮你解决室友天偷看我电脑!还带着纸巾?我决定用Python保护我的秘密了!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1208563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存