社区
C#
帖子详情
「玩一玩」System.Random类在极限运算环境下重复生成随机数的对比实验
Conmajia
2012-05-24 02:46:43
加精
...全文
1170
53
打赏
收藏
「玩一玩」System.Random类在极限运算环境下重复生成随机数的对比实验
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
53 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shoy160
2012-06-01
打赏
举报
回复
很有想象力。。
Conmajia
2012-05-31
打赏
举报
回复
[Quote=引用 51 楼 的回复:]
和极限不极限没关系 随机数是根据DateTime.Now.Ticks生成的 你要用不同的定义多个传进去就出不一样的数据了,你这样写在一起 一般都出一样的数据
[/Quote]
最好是贴出数据或者做法,我才好实验,只靠「一般」、「都」,这样的话不能让人信服。
hzpdh
2012-05-31
打赏
举报
回复
和极限不极限没关系 随机数是根据DateTime.Now.Ticks生成的 你要用不同的定义多个传进去就出不一样的数据了,你这样写在一起 一般都出一样的数据
wtorc
2012-05-31
打赏
举报
回复
共同进步!
Danielankang
2012-05-30
打赏
举报
回复
不错的分享,谢谢。
种草德鲁伊
2012-05-28
打赏
举报
回复
[Quote=引用 18 楼 的回复:]
引用 15 楼 的回复:
好玩,感谢分享,不过楼主的结帖率。
有个恶心的设定,不结贴不能发新帖,我本来打算保持0结贴率的
[/Quote]
CSDN确实很SB
wcxwwdwwj2
2012-05-27
打赏
举报
回复
有点深度,一会再研究下
haitao
2012-05-26
打赏
举报
回复
[Quote=引用 28 楼 的回复:]
并没有认真看懂文章,只是想起以前做一个生成批量的随机号。用for循环,以毫秒做种子,结果全是相同的随机号。折腾不出结果,后来就改用Guid.NewId(),处理下当随机号了。
[/Quote]
种子是只需要设1次的,必须在循环外设的
Conmajia
2012-05-26
打赏
举报
回复
好吧,总之谢了
Conmajia
2012-05-26
打赏
举报
回复
[Quote=引用 41 楼 的回复:]
conmajia
不敢帮你改帖子,点编辑,出来的框框一个字都没有,就一个标题,我怕改了就over了,csdn的问题很多
[/Quote]
bdmh
2012-05-26
打赏
举报
回复
conmajia
不敢帮你改帖子,点编辑,出来的框框一个字都没有,就一个标题,我怕改了就over了,csdn的问题很多
Conmajia
2012-05-26
打赏
举报
回复
暴力法是屡试不爽的大招,理论上无敌,只是时间问题
Conmajia
2012-05-26
打赏
举报
回复
[Quote=引用 35 楼 的回复:]
引用 2 楼 的回复:
看来我写的有歧义。我贴的代码是引用的,并不是我实际使用的,那啥业务代码是我把他原来的和我这个无关的代码删了。我实际代码和你的是差不多的。
C# code
Guid guid = Guid.NewGuid();
int key1 = guid.GetHashCode();
int key2 = unchecked((int)DateTime.No……
[/Quote]
我的目的是尽量全面测试,我只恨不能测得所有组合情况,用了static岂不是和我的目的背道而驰
rularys
2012-05-26
打赏
举报
回复
[Quote=引用 37 楼 的回复:]
你调用银行的接口,你能“在毫秒级内穷举到了这个32位的种子”什么意义?你穷举几次,帐号就被暂时锁死了,那么通过“穷举”来“破解”的这个概念只有唬自己,唬不了别人。
[/Quote]
你误会了。我只是举例子指出伪随机函数的这个特性而已。
"我们要是知道人家生成密钥的“算法”,我们都能去暴力模拟它" 这句话。
任何密码都能暴力穷举,不管它的生成算法是什么。问题是是能不能付出这个代价——取128位或者更长的密匙,一方面也是为了让穷举的代价变得更高。RSA 的密匙生成算法是公开的,但这并不妨碍它所使用的密匙不可破解性
以专业开发人员为伍
2012-05-26
打赏
举报
回复
你调用银行的接口,你能“在毫秒级内穷举到了这个32位的种子”什么意义?你穷举几次,帐号就被暂时锁死了,那么通过“穷举”来“破解”的这个概念只有唬自己,唬不了别人。
以专业开发人员为伍
2012-05-26
打赏
举报
回复
[Quote=引用 34 楼 的回复:]
我就见过这样的一个加密策略:它利用伪随机函数来产生128位的临时密匙,再用这个密匙来加密明文;密匙本身再用公匙加密算法加密保存待查。在这里它就只利用了伪随机数的第二种特性。但是很遗憾,随机函数的种子的随机性没有得到重视,只是简单的用一个GetTickCount获取的一个32位值来做。结果利用这个特点,我在毫秒级内穷举到了这个32位的种子,再利用它生成的128位伪随机数破解了密文——它那128位的密匙根本是摆设。[/Quote]
你这里有个自己“设计”的前提,然后去批驳它。没有多少实际意义。我们要是知道人家生成密钥的“算法”,我们都能去暴力模拟它。你把这个叫做“密码破解”?
以专业开发人员为伍
2012-05-26
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
看来我写的有歧义。我贴的代码是引用的,并不是我实际使用的,那啥业务代码是我把他原来的和我这个无关的代码删了。我实际代码和你的是差不多的。
C# code
Guid guid = Guid.NewGuid();
int key1 = guid.GetHashCode();
int key2 = unchecked((int)DateTime.Now.……
[/Quote]
你的r应该定义为 static 的变量,只要在类型加载时初始化一次就够了。
rularys
2012-05-26
打赏
举报
回复
呵呵 楼主的对实验结果的总结还少指出一个结论:
对于只是需要伪随机数的概率分布特性的,种子不重要,随便哪个种子,伪随机数序列的分布都没什么大的不同。
但是如果是需要伪随机数的随机性来作为密码的话,其随机性或者说其不可破解性取决于种子的随机性。
一般这两个需要都是同时出现的,但也有疏忽的时候:
我就见过这样的一个加密策略:它利用伪随机函数来产生128位的临时密匙,再用这个密匙来加密明文;密匙本身再用公匙加密算法加密保存待查。在这里它就只利用了伪随机数的第二种特性。但是很遗憾,随机函数的种子的随机性没有得到重视,只是简单的用一个GetTickCount获取的一个32位值来做。结果利用这个特点,我在毫秒级内穷举到了这个32位的种子,再利用它生成的128位伪随机数破解了密文——它那128位的密匙根本是摆设。
lthaoyue
2012-05-25
打赏
举报
回复
分析的很详细啊
mimixi666
2012-05-25
打赏
举报
回复
很好很好。。不错,加油
加载更多回复(22)
Java常用API
本课程是《零基础学Java》课程的第六阶段课程,课程内容详实、细致,讲解通俗易懂!...基本
类
型包装
类
(Integer,Character) 5.Math
类
/
Random
类
/System
类
6.BigInteger
类
/BigDecimal
类
7.Date
类
/DateFormat
类
/Calendar
类
System.
Random
类
在
极限
运算
环境
下
重复
生成随机数
的对比
实验
原创图片,请勿转载 作者:野比(conmajia@gmail.com) 23 May 2012 © 保留所有权利 野比 2012 注:本文为个人尝试,仅供参考。 真随机和伪随机 随机数是计算机编程中一个非常重要的工具。利用它,我们可以完成很多很多很多的事,而且有很多很多很多的事也必须用随机数来完成。所以随机数够不够「随机」,对我们来说,是非常之关键的。在软件
Unity——浅谈Unity ECS结合Job System详解
前言 本文是上一篇《Unity ECS 高性能探索》的续篇。在上一篇,我们用ECS实现了PC下同屏2w个球体,编辑器下跑到了120FPS。而在本篇,我们把性能继续解放,加上Job System,把同屏推进到8w个球体,60FPS。性能瓶颈我们先来看一下上一篇实现的ECS同屏2w个球体,如果加到8w个会怎么样 只有不到40FPS,上一篇里我们提到了,开启GPU Instancing以后,性能热点从提...
随机数试验
Conmajia © 2012, 2018 Published on May 23rd, 2012 Updated on March 10th, 2018 这是重新排版的版本。 真随机和伪随机 随机数是计算机编程中一个非常重要的工具. 随机数够不够随机,非常关键. 在软件编程中,比如C♯(其他任何语言均与此
类
似),可以用 System.
Random
来获得随机数. 从本质上讲,
Random
生...
【优化】java生成四则
运算
要求:使用C或Java语言完成一个自动生成四则
运算
试题的程序 软件基本功能如下。 自动生成10道100以内的2个操作数的四则
运算
算式(+ - * /),要求
运算
结果也在100以内 剔除
重复
算式。2+3 和 2+3 是
重复
算式,2+3 和 3+2 不属于
重复
算式 题目数量可定制 相关参数可控制 是否包含乘法和除法 操作数数值范围可控 操作数是否含负数 生成的
运算
题存储到外部文件res...
C#
110,534
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章