当前位置: 首页 > news >正文

【 开发知识点 一 】 随机数生成器 /dev/urandom 和 /dev/random

文章目录

  • 一、随机数生成器 是什么 ?
  • 二、为什么 需要 随机数生成器 ?
  • 三、随机数生成器 基本原理
  • 四、随机数生成器 三个输出接口
  • 五、随机生成器 应用
    • 1、简单应用
    • 2、项目应用


一、随机数生成器 是什么 ?

/dev/random/dev/urandom 是 Linux 上的字符设备文件,它们是随机数生成器,为系统提供随机数。


二、为什么 需要 随机数生成器 ?

随机数在计算中很重要。 TCP/IP 序列号、密码和 DNS 源端口号都依赖于随机数。

在密码学中,随机性无处不在,从密钥的生成到加密系统,甚至密码系统受到攻击的方式。没有随机性,所有加密操作都是可预测的,因此不安全。


三、随机数生成器 基本原理

为了尽可能的做到随机,随机数生成器会收集系统环境中各种数据,比如:鼠标的移动,键盘的输入, 终端的连接以及断开,音视频的播放,系统中断,内存 CPU 的使用等等。

生成器把收集到的各种环境数据放入一个池子 ( 熵池 ) 中,然后将这些数据进行去偏移等,主要目的也是使得数据更加无序,更加难以猜测或者预料得到

有了大量的环境数据之后,每次获取随机数时,从池子中读取指定的字节序列,这些字节序列就是生成器生成的随机数

  • 收集器

收集器收集系统中的环境噪音,比如:鼠标、键盘、中断事件、内存、CPU等,收集之后进行批量偏移等操作,之后进入主熵池中

  • 主熵池

主熵池接收收集器传递过来的环境数据,大小为 512字节( 4098二进制位) , 它为 次熵池(random 熵池) 和 urandom 熵池提供随机数

在 Linux上,可以通过下面的命令查看当前系统主熵池大小, 单位是 二进制位的数量

cat /proc/sys/kernel/random/poolsize
  • 次熵池

/dev/random 设备关连的,大小为128字节,它是阻塞的

  • urandom 熵池

和 /dev/urandom 设备关连的,大小为128字节,它是非阻塞的

  • 计数器

主熵池 、次熵池 以及 urandom 熵池各自都有一个计数器,用一个整数值来记录,表示当前熵池中可用随机数的数量,这是一个预估的值,它是生成器根据熵池中的环境数据估算出来的

当熵池中有新的随机数加入时,对应熵池的计数器计数会增加,当熵池中随机数被取出时,熵池计数器计数减少


相关文章:

【 开发知识点 一 】 随机数生成器 /dev/urandom 和 /dev/random

文章目录 一、随机数生成器 是什么 ?二、为什么 需要 随机数生成器 ?三、随机数生成器 基本原理四、随机数生成器 三个输出接口五、随机生成器 应用1、简单应用2、项目应用一、随机数生成器 是什么 ? /dev/random 和 /dev/urandom 是 Linux 上的字符设备文件,它们是随机数…...

LabVIEW虚拟弗兰克赫兹实验仪

随着信息技术的飞速发展,虚拟仿真技术已经成为教学和研究中不可或缺的工具。开发了一种基于LabVIEW平台开发的虚拟弗兰克赫兹实验仪,该系统不仅能模拟实验操作,还能实时绘制数据图形,极大地丰富了物理实验的教学内容和方式。 ​ …...

LLC谐振变换器恒压恒流双竞争闭环simulink仿真

1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2017Ra)软件。建议采用matlab2017 Ra及以上版本打开。(若需要其他版本可联系代为转换)针对全桥LLC拓扑,利用Matlab软件搭建模型,分别对轻载&#xf…...

TVbox蜂蜜影视:智能电视观影新选择,简洁界面与强大功能兼具

蜂蜜影视是一款基于猫影视开源项目 CatVodTVJarLoader 开发的智能电视软件,专为追求简洁与高效观影体验的用户设计。该软件从零开始编写,界面清爽,操作流畅,特别适合在智能电视上使用。其最大的亮点在于能够自动跳过失效的播放地址…...

Python 绘制迷宫游戏,自带最优解路线

1、需要安装pygame 2、上下左右移动,空格实现物体所在位置到终点的路线,会有虚线绘制。 import pygame import random import math# 迷宫单元格类 class Cell:def __init__(self, x, y):self.x xself.y yself.walls {top: True, right: True, botto…...

vue3学习-1(基础)

vue3学习-1(基础) 1. 开始API 风格选项式 API (Options API)组合式 API (Composition API) 快速创建个应用 2.基础1. 创建个应用2.模板语法3.响应式基础reactive() 的局限性[](https://cn.vuejs.org/guide/essentials/reactivity-fundamentals.html#limi…...

deepseek使用记录18——文化基因之文化融合

文明长河中的生命浪花 在洛阳白马寺的银杏树下,年轻母亲指着"农禅并重"碑刻给孩子讲述祖辈耕作的故事;在哔哩哔哩的直播间里,00后女孩穿着汉服跳起街舞,弹幕飘过"这才是文化缝合怪"。当文明交融的宏大叙事照…...

Hadoop简介

1. Hadoop简介 官网:http://hadoop.apache.org 1.1 Hadoop架构 Hadoop由三个模块组成:分布式存储HDFS、分布式计算MapReduce、资源调度引擎YARN 1.2 Hadoop历史 Hadoop作者Doug Cutting Apache Lucene是一个文本搜索系统库 Apache Nutch作为前者的一部…...

密码学(哈希函数)

4.1 Hash函数与数据完整性 数据完整性: 检测传输消息(加密或未加密)的修改。 密码学Hash函数: 构建某些数据的简短“指纹”;如果数据被篡改,则该指纹(以高概率)不再有效。Hash函数…...

谈谈单例模式中通过Htools包的SpringUtil.getBean获取Bean的好处

目录 优势 解决依赖注入失效问题: 典型应用场景: 好处 1. 实例化时序问题 2. 延迟获取解决空指针 3. 设计模式与 Spring 的权衡 代码对比:错误 vs 正确 错误示例(空指针): 正确实现(延…...

本地部署大语言模型-DeepSeek

DeepSeek 是国内顶尖 AI 团队「深度求索」开发的多模态大模型,具备数学推理、代码生成等深度能力,堪称"AI界的六边形战士"。 Hostease AMD 9950X/96G/3.84T NVMe/1G/5IP/RTX4090 GPU服务器提供多种计费模式。 DeepSeek-R1-32B配置 配置项 规…...

adb的安装

1、概念 (1)adb(android debug bridge)安卓调试桥,用于完成电脑和手机之间的通信控制。 (2)xcode来完成对于ios设备的操控,前提是有个mac电脑。 2、adb的安装 (1&…...

Python 如何实现 Markdown 记账记录转 Excel 存储

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…...

随机播放音乐 伪随机

import java.util.*;/*** https://cloud.tencent.com.cn/developer/news/1045747* 伪随机播放音乐*/ public class MusicPlayer {private List<String> allSongs; // 所有歌曲列表private List<String> playedSongs; // 已经播放过的歌曲列表private Map<String…...

latex 环境配置

编译器可选 miktex和 tex live ① miktex 下载地址 Portable 版本用的也是 Installer版的安装程序 basic-miktex-24.1-x64.exe&#xff0c;但是需要修改文件名为 miktex-portable.exe ├──texmfs │ ├─config │ ├─data │ └─install │ └─miktex/…...

fortify安全扫描Access Control: Database问题解决

概述 Access Control: Database说白了就是权限控制。在访问数据库(sql和nosql)需要加入当前用户的权限控制。不然会被fortify扫描出来&#xff0c;认为客户端可能不挟持和假冒&#xff0c;从而导致数据被泄露。 但是这个并不是任何时候都需要的&#xff0c;有的接口本来…...

Java 设计模式:软件开发的精髓与艺

目录 一、设计模式的起源二、设计模式的分类1. 创建型模式2. 结构型模式3. 行为型模式三、设计模式的实践1. 单例模式2. 工厂模式3. 策略模式四、设计模式的优势五、设计模式的局限性六、总结在软件开发的浩瀚星空中,设计模式犹如一颗颗璀璨的星辰,照亮了开发者前行的道路。它…...

初学者如何用 Python 写第一个爬虫?

?? 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长。 ?? …...

Cocos Creator3.8.6拖拽物体的几种方式

文章目录 前言一、第一种通过UILocation二、第二种通过UIDelta实现总结 前言 在游戏开发中&#xff0c;拖拽物体是一个非常常见的交互功能&#xff0c;无论是用于UI元素的拖动&#xff0c;还是场景中物体的移动&#xff0c;拖拽操作都能极大地提升用户体验。Cocos Creator 3.8…...

分布式Session

我用「餐厅点餐代码实战」帮你彻底搞懂分布式Session&#xff0c;看完不仅能应对面试&#xff0c;还能直接应用到实际开发。先记住这个核心矛盾&#xff1a;多服务员如何记住同一顾客的喜好&#xff1f; 一、从生活场景理解Session的本质 传统单机场景&#xff08;小餐馆&…...

贡献指南 | 参与 Harmonybrew 开源社区共建规范

贡献指南 | 参与 Harmonybrew 开源社区共建规范 欢迎大家加入鸿蒙PC社区 Harmonybrew 是面向 OpenHarmony/鸿蒙系统的 Homebrew 移植开源项目&#xff0c;依托多仓库协作模式&#xff0c;实现包管理器适配、软件包移植、工具适配、文档维护等全链路能力。为规范社区贡献流程、…...

Unity AssetBundle全生命周期管理实战:打包、上传、加载与卸载闭环指南

1. 这不是“打包完就完事”的流程&#xff0c;而是一条必须闭环的资源生命线在Unity项目做到中后期&#xff0c;你大概率会遇到这几个扎心时刻&#xff1a;打包后安装包体积突然暴涨300MB&#xff0c;美术说“就加了5张贴图”&#xff0c;程序查了一天发现是某张HDR天空盒被错误…...

Longhorn分布式存储实践:构建高可用Kubernetes存储方案

Longhorn分布式存储实践&#xff1a;构建高可用Kubernetes存储方案 一、Longhorn概述 Longhorn是一个开源的分布式块存储系统&#xff0c;专为Kubernetes设计。它提供持久化存储解决方案&#xff0c;支持高可用性、数据冗余和自动故障转移。 Longhorn的核心特性&#xff1a;…...

FlashAttention 反向传播:删掉 O(N²) 的中间结果,怎么还能算对梯度?

FlashAttention 反向传播&#xff1a;删掉 O(N) 的中间结果&#xff0c;怎么还能算对梯度&#xff1f; 之前有人跟我争&#xff1a;FlashAttention 反向传播不存注意力矩阵&#xff0c;那梯度从哪来&#xff1f;你前向传播的时候 Softmax 的分母、分子都扔了&#xff0c;反向传…...

Agent 框架别急着乱学:先用 LangChain 搞懂 7 个基本模块

先说结论。 如果你想系统理解 Python Agent 框架&#xff0c;LangChain 仍然值得作为第一篇。它不是最轻的&#xff0c;也不是最“自动化”的&#xff0c;但它把 Agent 应用里的关键零件都摆出来了&#xff1a;模型、工具、状态、记忆、middleware、多 Agent 路由和 tracing。…...

终极原神帧率解锁指南:3步突破60FPS限制,畅享丝滑游戏体验

终极原神帧率解锁指南&#xff1a;3步突破60FPS限制&#xff0c;畅享丝滑游戏体验 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 原神帧率解锁工具是一款专为《原神》PC玩家设计的开源性…...

终极指南:三阶加速法让BT下载速度提升300%的完整方案

终极指南&#xff1a;三阶加速法让BT下载速度提升300%的完整方案 【免费下载链接】trackerslist Updated list of public BitTorrent trackers 项目地址: https://gitcode.com/GitHub_Trending/tr/trackerslist 你是否曾面对BT下载时缓慢如蜗牛、连接时断时续的困境&…...

Sub-Zero性能优化:7个技巧让你的Plex字幕运行如飞

Sub-Zero性能优化&#xff1a;7个技巧让你的Plex字幕运行如飞 【免费下载链接】Sub-Zero.bundle Subtitles for Plex, as good you would expect them to be. 项目地址: https://gitcode.com/gh_mirrors/su/Sub-Zero.bundle Sub-Zero是Plex媒体服务器最强大的字幕插件之…...

在RK3568开发板上搭建NFS服务器:打通ARM与X86文件共享

1. 项目概述&#xff1a;为什么要在RK3568上折腾NFS&#xff1f;手头有一块瑞芯微RK3568的开发板&#xff0c;性能不错&#xff0c;四核A55的架构&#xff0c;跑个轻量级服务器绰绰有余。最近在做一个边缘计算相关的原型验证&#xff0c;需要在开发板和我的主力工作站之间频繁地…...

Win11系统下,Java开发环境配置保姆级教程(JDK 8u201安装+环境变量避坑指南)

Win11系统Java开发环境配置全攻略&#xff1a;从零开始避坑指南 刚接触Java编程的新手们&#xff0c;面对陌生的开发环境配置往往感到无从下手。特别是对于非计算机专业背景的学习者来说&#xff0c;那些晦涩的术语和复杂的系统设置就像一堵高墙&#xff0c;让人望而生畏。本文…...