如何在 python 中创建一个加密安全的随机数?

2023-11-27

我正在用 python 制作一个项目,我想创建一个加密安全的随机数,我该怎么做?我在网上读到,常规随机发生器生成的数字在加密上并不安全,并且该函数os.urandom(n)返回给我一个字符串,而不是数字。


由于您想要生成某个特定范围内的整数,因此使用random.SystemRandom类代替。创建该类的实例将为您提供一个支持该类的所有方法的对象random模块,但使用os.urandom()在幕后。例子:

>>> from random import SystemRandom
>>> cryptogen = SystemRandom()
>>> [cryptogen.randrange(3) for i in range(20)] # random ints in range(3)
[2, 2, 2, 2, 1, 2, 1, 2, 1, 0, 0, 1, 1, 0, 0, 2, 0, 0, 0, 0]
>>> [cryptogen.random() for i in range(3)]  # random floats in [0., 1.)
[0.2710009745425236, 0.016722063038868695, 0.8207742461236148]

等使用urandom()直接地,您必须发明自己的算法来将其产生的随机字节转换为您想要的结果。不要那样做;-)SystemRandom为你做。

请注意文档的这一部分:

类 random.SystemRandom([种子])

使用 os.urandom() 函数从操作系统提供的源生成随机数的类。并非在所有系统上都可用。不依赖于软件状态并且序列不可再现。因此,seed() 和 Jumpahead() 方法无效并被忽略。如果调用 getstate() 和 setstate() 方法,则会引发 NotImplementedError。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 python 中创建一个加密安全的随机数? 的相关文章

随机推荐

  • 如何在 Android 应用程序中执行 SQLite 查询?

    我试图在我的 Android 数据库上使用此查询 但它不返回任何数据 我错过了什么吗 SQLiteDatabase db mDbHelper getReadableDatabase String select Select id title
  • 将两个不同的 servlet 映射到相同的 URL 模式

    我遇到了一个别人写的J2EE项目 当我来到web xml 有两个不同的 servlet 映射到同一 URL 模式 我想知道这种方法的目的 它究竟是如何运作的以及目的是什么 这是相关部分web xml
  • 延迟约束检查

    目前 在我们的数据库设计中 我们在两个实体之间存在循环引用 换句话说 我们在每个表中都有外键 它们引用彼此的主键 为了在这些表中插入记录 我们需要执行延迟约束检查 这在 SQL Server 2008 中可能吗 我知道 Oracle DDL
  • 在 Visual Studio C# 中创建具有动态选项卡数量的选项卡控件

    如何在 Visual Studio C 中创建具有动态选项卡数量的选项卡控件 我有一个带有表的数据库customers 我需要创建一个表单 显示带有客户姓氏首字母的选项卡 仅显示表中应有条目的首字母 每个选项卡都应包含一个具有相应客户的 D
  • 对于 API 级别 < 11,getCheckedItemCount() 的等效项是什么?

    我正在使用此方法来检查检查了列表上的多少个项目 但收到此错误 表明此方法不适用于任何早于 11 的 SDK API 级别 8 中的 this 相当于什么 接受的答案对我不起作用 总是返回 0 我不得不使用以下代码 public static
  • 如何获取 C 中动态创建的结构数组的长度?

    我目前正在尝试获取动态生成的数组的长度 它是一个结构数组 typedef struct my data unsigned int id double latitude double longitude unsigned int conten
  • Singleton 和 @Autowired 返回 NULL

    我有一个存储库管理器来管理我的存储库 我有 Autowired 来实例化我的属性 但它们始终为空 bean 在我的 xml 中配置正确 有什么理由吗 public class RepositoryManager private static
  • 测量 Android 应用程序花费的时间

    我是安卓新手 在我的应用程序中 我想跟踪其他应用程序 安装在设备上 的使用时间 在前台 是否可以 如果是的话怎么办 提前致谢 首先 这里需要知道什么是在前台运行的应用程序 您可以使用以下命令检测当前的前台 后台应用程序ActivityMan
  • 如何在 Swift 3 (XCode 8) 中从文本文件读取数据

    首先我想从我现在的情况说起 1 现状 我有一个文本文件 data rtf 我也尝试过并且愿意使用 plist 或任何其他格式来获得结果 我一直在尝试从此文件中读取任何数据 并在标签上显示该数据 我尝试过预填充文件 在读取文件之前保存到文件
  • 使用 Boto 读取 S3 中文件的一部分

    我正在尝试读取存储在 S3 中的 700MB 文件 然而我只需要位置 73 到 1024 之间的字节 我试图找到一个可用的解决方案 但未能成功 如果有人能帮助我 那将是一个很大的帮助 S3支持使用 Range HTTP 标头的 GET 请求
  • 在用户提交的数据中不转义 & 符号是否存在安全风险?

    在显示用户生成 提交的信息时 转义其他特殊字符但不更改与号是否存在安全风险 我想让我的用户自由输入 html 实体 十六进制和十进制特殊字符 而不会给我的清理程序增加不必要的复杂性 这完全取决于数据放入的上下文 在 HTML 中 表示纯文本
  • 我们可以用二叉搜索树来模拟堆操作吗?

    我想知道我们是否可以使用二叉搜索树来模拟堆操作 插入 查找最小值 删除最小值 即使用 BST 来完成相同的工作 这样做有什么好处吗 我们当然可以 但具有平衡的 BST 最小值是最左边的元素 最大值是最右边的元素 找到这些元素是O logn
  • 在通过 loadGeoJson() 加载的功能上创建 Infowindows

    如果这是基础知识 我深表歉意 但我的 JavaScript 知识非常有限 我正在制作一个地图 该地图加载我在 ArcGIS 中创建的 GeoJSON 数据 并使用 ogr2ogr 重新格式化为 GeoJSON 我已经加载了地图并显示了 Ge
  • 如何从特定 FPS 的视频中提取帧?

    我能够提取特定的帧test mp4使用以下代码创建文件 import cv2 def get frames cap cv2 VideoCapture test mp4 i 0 while cap isOpened ret frame cap
  • 如何在 Kotlin 中向 Gson 注册 InstanceCreator?

    我可以使用代码1来保存MutableList
  • 在浏览器中加载 ionic 项目时提示错误“localhost:8100 said gap_init:3”消息

    当我在任何页面代码中进行更改时 都会显示一条提示消息 localhost 8100说gap init 3 然后我单击 确定 按钮 另外显示 5 条消息 关闭浏览器并再次打开效果良好 但进行任何更改都会显示此提示 如何修复它 提前致谢提示错误
  • 从基类指针访问子类成员 C++

    我有一系列自定义类 Student 对象 CourseStudent和ResearchStudent都继承自Student 并且Student的所有实例都是其中之一 我有一个函数来遍历数组 确定每个学生的子类型 然后对它们调用特定于子类型的
  • 将 adb 与具有相同序列号的多个设备一起使用[重复]

    这个问题在这里已经有答案了 我的电脑连接了两个设备 但是当我启动adb时 它们的序列号都是 0123456789ABCDEF When I try to install an APK the installation fails with
  • Haskell:使用 $ 的函数应用

    在下面的代码片段中 您可以看到我用 Haskell 编写的两个 collat z 函数 对于递归应用程序 我在第一个示例 collat z 中使用括号来获得正确的优先级 由于我刚刚学习了 的函数应用 我尝试使用那个东西重写函数 collat
  • 如何在 python 中创建一个加密安全的随机数?

    我正在用 python 制作一个项目 我想创建一个加密安全的随机数 我该怎么做 我在网上读到 常规随机发生器生成的数字在加密上并不安全 并且该函数os urandom n 返回给我一个字符串 而不是数字 由于您想要生成某个特定范围内的整数