随机数

区块链100讲:区块链中的随机数

吃可爱长大的小学妹 提交于 2020-02-29 15:34:55
我们生活的环境充满了随机性。一直以来,运气,概率和命运这些概念都与随机性紧紧联系在一起。所有人类无法理解或无法预测的事物往往都被归类为随机事物。从生理上来说,我们也是沉浸在了随机海洋中。从云的运动到粒子和波浪的行为,随机性简直无处不在。 然而,尽管人类接触到了各种各样的随机事物,对随机性很熟悉,但依然难以将它转化为计算机可以使用的东西。当我们谈论计算机系统中的随机性时,我们真正指的是伪随机性,即尽可能模拟出现实世界应有的随机性,使之近乎于“真正的随机性”。以密码学安全伪随机数生成器为例,这是一个非常强大的随机性模拟。 随机数在隐私技术和密码学中发挥着重要作用。令人惊艳的是,通过生成一个随机数来对一条消息进行异或运算(XOR),提供了一种简单但十分强大的加密方案。即使是双方之间最简单的私人通信形式(即双方提前共享密钥的对称加密方案)也要求共享的密钥是随机的。如果此共享密钥不是随机的,则加密就毫无用处,因为任何知道密钥生成算法的人都可以确定密钥然后解密该条消息。 随机数的重要性不仅体现在安全通信渠道的建立上,还体现在确认通信对象上。如果多个人试图通过有限带宽的频道来互相通信,则可以利用随机数来确定频道携带消息的合理顺序。 随机数能够有效帮助团体或计算机达成一致协议或共识。随机共识协议就是这样一个例子。本文将探讨随机数在区块链中的作用。 区块链就是一个多方尝试就全局视角的某种更新达成一致

Https请求的加密过程

让人想犯罪 __ 提交于 2020-02-29 15:30:57
http与Https的区别 https是在https的基础上做了一层数据加密处理,在一些安全要求比较高的场景中,数据在服务器和客户端之间传输的过程中,是要求对数据进行加密处理后再传输的,以保证被传输数据的安全性。 加密方式 对称加密 对称加密的话,加密和解密过程中使用到的秘钥都是同一个,因此,对称加密要保证安全的话,秘钥就必须做好保密,只能让使用的人知道,不能对外公开。 对称加密存在一个问题就是,秘钥的传输不能够保证安全。因为在通信过程中,秘钥必须是需要有一个从服务器到客户端的一个传输过程,一但在秘钥传输过程中这个秘钥被黑客截获,那么接下来的通信过程就可能存在安全隐患了。 非对称加密 非对称加密加密使用的秘钥和解密使用的秘钥是不相同的,一把是作为公开的公钥,另外一把是作为谁都不能给的私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。 非对称加密的私钥放在服务器中,不会在网络中传播,这样就能保证这个私钥的私密性。但是对应的公钥,是可以在互联网上随意传播的,只要网站把这个私钥传给客户端,两端就可以相互进行通信了。 存在的问题 如果只用一对公钥和私钥的话, 那么服务器网站发送回复消息的时候,这个时候的数据加密就会有问题,如果用自己的私钥加密的话,因为对应的公钥谁都可以拿到,所以这样肯定是行不通的,如果用对应的公钥加密的话,加密后的数据只有服务器本身能解密出来

从蒙特卡洛方法计算pi值谈random模块

蓝咒 提交于 2020-02-29 06:20:39
计算机模拟常常需要用到随机选择的数。本文从随机数的一个简单应用开始简要地介绍Python的random模块。 使用蒙特卡洛方法计算pi值 Links:该问题来自于pudure university(普渡大学)python课程中的problem set2 Monte Carlo methods are used to simulate complex physical and mathematical systems by repeated random sampling. In simple terms, given a probability, p, that an event will occur in certain conditions, a program generates those conditions repeatedly. The number of times the event occurs divided by the number of times the conditions are generated should be approximately equal to p. 蒙特卡洛方法通过重复随机取样用于复杂的物理和数学系统的 仿真 。简单地说,给定一个变量p,用于描述事件在一定条件下发生的概率,程序重复地生成这些条件

2020年java常用类课堂笔记

断了今生、忘了曾经 提交于 2020-02-28 23:59:35
java常用类 1.String类 String类是final类型 ,String字符串是常量,不可改变。 String类两种初始化方法( 效果相同 ): String 变量名 = “字符串”; String 变量名 = new String(“字符串”); String构造方法 方法声明 功能描述 String() 创建一个内容为空的字符串 String(String value) 根据指定的字符串内容创建对象 String(char[] value) 根据指定的字符数组创建对象 实例代码 public class CommonlyUsed { String s1 = "我是阿凡不平凡" ; String s2 = new String ( "我是阿凡不平凡" ) ; String s3 = new String ( new char [ ] { '我' , '是' , '阿' , '凡' , '不' , '平' , '凡' } ) ; public void test ( ) { System . out . println ( s1 ) ; System . out . println ( s2 ) ; System . out . println ( s3 ) ; System . out . println ( s1 + s2 + s3 ) ; } public

【狗屁不通文章生成器】代码分析 (javaScript)

 ̄綄美尐妖づ 提交于 2020-02-28 21:12:32
这几天在论坛上看到了一个很有意思的项目,一个生成“狗屁不通”的文章的程序。经过本人确定其的确是“狗屁不通”后,随后又好奇其实现,于是在其[GitHub]项目里( https://github.com/menzi11/BullshitGenerator)找到源码,研究了半晌 。 我看的是网页版的,就是JS文件里的核心代码。 作者使用了大量的中文变量名,请谨慎阅读,若有不适请立即离开 声明的String数组--组成文章的核心内容 let 主题 = "一天掉多少根头发"; //用户输入的文字(会围绕该文字“生成”文章) let 论述 = [ "现在,解决主题的问题,是非常非常重要的。 所以, ", "我们不得不面对一个非常尴尬的事", //略,这里有很多的这种论述 ]; let 名人名言 = [ "伏尔泰曾经说过,不经巨大的困难,不会有伟大的事业。这不禁令我深思", "富勒曾经说过,苦难磨炼一些人,也毁灭另一些人。这不禁令我深思", //略,这里有很多名人名言]; let 后面垫话 = [ "这不禁令我深思。 ", "带着这句话,我们还要更加慎重的审视这个问题: ", "这启发了我, ",]; let 前面垫话 = [ "曾经说过", "在不经意间这样说过", ]; 上面的字符串数组是此程序的“基石”,也是可以通过修改其内容从而改变文章“内容”的重要备份 声明的几个函数--“合成

猜数字 随机数的产生

ぃ、小莉子 提交于 2020-02-27 20:17:01
C1猜数字 随机数的产生 1.头文件和相关语句 #include Rand(); 就是一个函数关系,seed 通过这个函数对应关系得到另一数值,一个seed对应到一个值。 这个seed在电脑开机时已经固定,直接cout<<rand()值是一个 固定的,除非重启电脑 ()里面不写东西 Srand(); rand()用到的seed由这个函数提供,这个括号里面写什么seed就是谁 这个seed需要是一个无符号整型数 #include time(0);1970.1.1至当前时间的秒数 Cout<<time(0);会输出秒数 由于这个值随时间变,时刻是惟一的,所以每次产生的肯定不一样,可以利用它作为随机数种子(即seed)来产生随机数。 2.产生一定范围的随机数 如产生39-45的随机数 Srand((unsigned)time(0)) Int a=rand()%7+39; 来源: CSDN 作者: m0_37733257 链接: https://blog.csdn.net/m0_37733257/article/details/104326184

用python写的一个猜随机数的小游戏

蹲街弑〆低调 提交于 2020-02-27 18:30:48
写在前面 : 这个游戏的代码可以说是 用来复习所学的一些基础知识之一,所以一些输入优化就没做了 (如果对借鉴的人提供到帮助 那再好不过了) # 导入随机数模块 import random ''' 猜数小游戏 程序需求: 在游戏中,每一轮会随机生成一个0-1024之间的数字(整数) 用户输入测试数字,程序会告诉用户猜大了还是猜小了。 - 在一定次数内猜对,则本轮用户获胜,否则本轮用户失败 - 每一轮开始时,程序会要求用户输入用户名 - 程序会一直运行,直到用户输入"3",停止游戏 - 每一轮游戏开始前,输入1可以查看用户输入的历史 ''' histiory = {} answer = random.randint(0,1024) # 查看用户的输入历史 def user_his(): if not histiory: print("无用户输入记录 请输入2开始游戏") else: for i, j in histiory.items(): print('用户{},记录如下{}'.format(i, j)) # 用于测试用户与随机数1 # ansewr是随机数,user 是用户名称 def user_input(ansewr,user): end_num = 0 while end_num < 10: num = int(input('请输入一个数字:')) if num <

python中randon随机数

二次信任 提交于 2020-02-27 15:12:19
一。randrange函数: 返回指定递增基数集合中的一个随机数,基数默认值为1 import random random.randrange([start,]stop[,step]) start:指定范围内的开始值,包含在范围内 stop:指定范围内的结束值,不包含在范围内 step:指定递增基数 二。choice函数: 返回一个列表、元组、字符串的随即项 import random print("choice([1,2,3,4,5]):",random.choice([1,2,3,4,5])) 运行结果为 choice([1,2,3,4,5]):3 来源: CSDN 作者: cuicui_ruirui 链接: https://blog.csdn.net/cuicui_ruirui/article/details/104527710

HTTPS 原理分析——带着疑问层层深入

丶灬走出姿态 提交于 2020-02-27 14:31:17
HTTPS 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA证书等,但对于以下灵魂三拷问可能就答不上了: 为什么用了 HTTPS 就是安全的? HTTPS 的底层原理如何实现? 用了 HTTPS 就一定安全吗? 本文将层层深入,从原理上把 HTTPS 的安全性讲透。 HTTPS 的实现原理 大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实,HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。 HTTPS的整体过程分为证书验证和数据传输阶段,具体的交互过程如下: WX20191127-133805@2x.png ① 证书验证阶段 浏览器发起 HTTPS 请求 服务端返回 HTTPS 证书 客户端验证证书是否合法,如果不合法则提示告警 ② 数据传输阶段 当证书验证合法后,在本地生成随机数 通过公钥加密随机数,并把加密后的随机数传输到服务端 服务端通过私钥对随机数进行解密 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输 为什么数据传输是用对称加密? 首先,非对称加密的加解密效率是非常低的,而

HTTPS中TLS/SSL的握手过程

半城伤御伤魂 提交于 2020-02-27 09:05:09
1,非对称加密技术 非对称加密算法需要两个密钥,公开密钥(publickey)和私有密钥(privatekey);公钥和私钥是成对出现的。 非对称加密例子:B想把一段信息传给A,步骤:1)A把公钥传给B;2)B拿到A的公钥并利用此密钥给信息加密;3)B把加密的信息传给A;4)A利用私有密钥对加密信息进行解密即可得到B想给自己的信息。 (这个过程叫做密码传输,即B把信息加密后传给A) 问题:如果有个捣乱的冒充B,也用A的公钥给一段信息加密,并传给A,A再私钥解密得到的信息就会误认为是B的。 要解决此问题,B需要给A传个验证信息,让A可以验证自己受到的信息是B传的。该验证信息即下面的数字摘要(数字指纹) 2,数字摘要技术 该技术主要利用了哈希函数的两个特性:1)单向性;2)计算结果位数固定 数字摘要是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。“数字摘要“是https能确保数据完整性和防篡改的根本原因。 3,数字签名技术 数字签名技术既利用了数字摘要(数字指纹)技术也利用了非对称加解密技术 。 数字签名过程 :1)B利用哈希函数得到上面传输信息的哈希值;2)B利用私钥给哈希值加密(注意:这里的非对称加密(私钥加密,公钥解密