背景

日常开发中,必然会碰到需要生成随机数的需求,比如生成图片验证码,短信验证码……随机数生成既然是这么简单的一个功能,开发必然也很简单,我们看看怎么生成一个随机数,这里以随机生成1-100的整数为例。

普通程序员的写法

import random

random.randint(1,100)

只用了两行代码,程序员小Z就写出了一个随机数。

QA有话说

随机模块提供的随机生成器是伪随机数生成器。所谓伪随机数,是通过固定的算法生成的,其结果是确定的,可预见的。一般情况下,伪随机数的生成需要一个种子,如果没有特别设置,种子就是系统的时钟。简而言之,由于伪随机数算法固定,种子固定,那结果就是可推导和模拟的。那这里的随机也就不是真正的随机,只要在随机数生成过程中有一点偏差,破译者就能够利用偏差对保密信息进行破译。

实际上,在密码学上对随机性有三个分类:伪随机序列,密码学意义上的伪随机序列,真随机序列。

前面小Z写的程序就类属于伪随机序列,1-100中每个数出现的频率相等或近似相等。

而真随机序列则要求随机数不能重复产生,且不能由已知的任意数推导出来。意味着,即使在相同的操作条件下,用完全相同的输入,随机数生成器生成的两个随机数也是不一样的,即两次生成的结果是不重复的且完全独立的。

由于真随机序列大多需要硬件支持,有一种折衷的方案,也就是密码学意义上的伪随机序列。密码学意义的伪随机序列要求即使知道前一次的生成,不能预测下一次生成的随机数。

高级程序员的写法

import secrets

secret_generator=secrets.SystemRandom()

secret_generator.randint(1,100)

小结

python在3.6版本添加了secrets模块,使用同步方法生成随机数据,以确保没有两个进程可以同时获得相同的数据。这个模块的功能很多,可以进一步发掘,常用于敏感信息保护的场景,常用的有生成随机数,从确定序列中随机取值,生成token。

随机数生成器python_python安全开发军规之四:使用安全的随机数生成器相关推荐

  1. SAP UI5 应用开发教程之四十八 - 如何在 SAP UI5 应用里开发条形码扫描功能试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  2. SAP UI5 应用开发教程之四十七 - 如何自定义 SAP UI5 字符串类型输入字段的校验逻辑试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  3. SAP UI5 应用开发教程之四十六 - 使用 Message Manager 实现开箱即用的验证(Validation)信息抛出

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  4. SAP UI5 应用开发教程之四十五 - 如何在 SAP UI5 应用里使用 jQuery 和原生的 DOM API

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  5. SAP UI5 应用开发教程之四十二 - SAP UI5 自带的 Diagnostics 诊断工具使用方法介绍

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  6. SAP UI5 应用开发教程之四十一 - Chrome 扩展 UI5 Inspector 的离线安装和使用方法试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  7. SAP UI5 应用开发教程之四十 - 如何制作包含了 component-preload.js 在内的 SAP UI5 发布版本

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  8. 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解

    本系列文章主要介绍如何在工程实践中使用卡尔曼滤波器,分七个小节介绍: 一.卡尔曼滤波器开发实践之一: 五大公式 二.卡尔曼滤波器开发实践之二:  一个简单的位置估计卡尔曼滤波器 三.卡尔曼滤波器(EK ...

  9. WatchOS开发教程之四: Watch与 iPhone的通信和数据共享

    WatchOS 开发教程系列文章: WatchOS开发教程之一: Watch App架构及生命周期 WatchOS开发教程之二: 布局适配和系统Icon设计尺寸 WatchOS开发教程之三: 导航方式 ...

  10. SAP UI5 应用开发教程之四十九 - 如何在桌面电脑端调试运行在手机上的 SAP UI5 应用试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

最新文章

  1. Auty 2017——WebMonitor接口线上检测平台
  2. 如果某路由器到达目的网络有三种方式:通过RIP;通过静态路由;通过默认路由,那么路由器会根据哪种方式进行转发数据包?( )
  3. 如何实现最佳的跨平台游戏体验?Unity成亮解密实时渲染技术!
  4. Codeforces Round #144 (Div. 2) B. Non-square Equation 数学解一元二次方程+分析
  5. 【Java虚拟机】Java虚拟机深度讲解、VisualVM工具、JVM调优
  6. uva 11995——I Can Guess the Data Structure!
  7. 5.spiders(文件夹)
  8. 对ExtendedWebBrowser的再扩展
  9. IBM推新编码系统 实现高清视频技术大突破
  10. 修改SQL Service数据库排序规则
  11. 小米MIX4发布会还有新品?小米全面屏电视PRO官宣
  12. [论文必备]解决pdf复制到word出现换行排版混乱-自动整理小工具 ScholarAssist-免费文献段落格式整理软件
  13. 《阿里巴巴Java开发手册》版本演进历史
  14. 春节假期最值得阅读的10本书
  15. SSH远程控制计算机
  16. 计蒜客 - 蒜头君的任务
  17. python实用的语法和函数
  18. speedoffice(Excel)如何设置纸张大小
  19. 打开小猫咪之后,国内的网站打不开了,怎么办。原因是dns解析出了问题
  20. 开发小程序需要服务器吗?小程序服务器配置有什么要求?

热门文章

  1. Linux CentOS 大数据集群的基础配置(3) CHD分布式环境搭建
  2. Pytorch并行计算(一): DataParallel
  3. vue瀑布流插件vue-waterfall-easy 2.x
  4. java中八种基本类型及默认值(2015年9月22日)
  5. 林达华——我的PhD生活
  6. instagram动态网页图片内容爬取(一)
  7. 如何使用网页版Instagram来发布图片
  8. 用 LSTM 预测股票价格
  9. AHU校赛网赛解题报告
  10. 你知道台湾Android开发面試題是什么样的吗(附答案解析)