CN1885774A - 在通信设备间产生相同随机数的方法及*** - Google Patents
在通信设备间产生相同随机数的方法及*** Download PDFInfo
- Publication number
- CN1885774A CN1885774A CN 200510077351 CN200510077351A CN1885774A CN 1885774 A CN1885774 A CN 1885774A CN 200510077351 CN200510077351 CN 200510077351 CN 200510077351 A CN200510077351 A CN 200510077351A CN 1885774 A CN1885774 A CN 1885774A
- Authority
- CN
- China
- Prior art keywords
- data
- random number
- communication equipment
- random
- communication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种在通信设备间产生相同随机数的方法,用于解决现有技术中存在多个通信设备间传递随机数存在占用大量网络资源和安全性差的问题;该方法由一个通信设备在本设备保存的数据选用表中选择一个或多个数据,并通知其余通信设备分别从各自保存的、且与所述数据选用表相同的数据选用表中进行相同的选择;各通信设备分别根据所述一个或多个数据和相同的随机种子,利用相同的随机数生成算法生成随机数。本发明还同时公开了一种可在通信设备间产生相同随机数的通信***。
Description
技术领域
本发明涉及计算机及通信技术领域,尤其涉及在通信设备间产生相同随机数的方法及***。
背景技术
在网络通信中,多个通信设备之间有时需要使用相同的随机数据来实现一些应用场景,特别是在网络游戏上。一般在网络游戏开始后,客户端都需要使用随机数来确定服务器端在游戏场景中派发的道具种类、道具的具体地点等,而且客户端的随机数据必须与服务器端的随机数相同,以保持服务器端和客户端中游戏场景的一致性。在游戏进行过程中,客户端同样还需要使用随机数来确定场景中人和物的位置关系。
现有技术方案都是在服务器端调用已有的库函数生成随机数,比如采用srand函数设置随机种子,用rand生成随机数;然后再通过网络向客户端传送生成的随机数。由于网络还需要处理场景中人物的死亡、复活、移动、救人、炸弹***等很多消息,其数据量非常大;而一个随机数一般为32bit,甚至更多,因此,服务器端通过网络客户端传送随机数会增加网络中的数据传输量,尤其是在客户端数量较多的情况下,传送随机数会占用大量的网络带宽,容易导致数据丢失或者游戏明显迟滞;而且在网络传输客户需要使用的随机数也容易被截获,其安全性较差。
发明内容
本发明提供一种在在通信设备间产生相同随机数的方法及***,以解决现有技术中存在多个通信设备间传递随机数存在占用大量网络资源和安全性差的问题。
为解决上述问题,本发明提供以下技术方案:
一种在通信设备间产生相同随机数的方法,包括下述步骤:
由一个通信设备在本设备保存的数据选用表中选择一个或多个数据,并通知其余通信设备分别从各自保存的、且与所述数据选用表相同的数据选用表中进行相同的选择;
各通信设备分别利用相同的随机数据生成算法和从数据选用表中选择的数据生成随机数。
所述数据选用表包括数据和数据的索引,所述其中一个通信设备选择数据后,将数据的索引通知其余各通信设备。
各通信设备在生成随机数时利用相同的随机种子。
首次使用的随机种子由所述其中一个通信设备生成并发送到其余通信设备,后续产生随机数时使用前次生成的随机数作为随机种子。
所述数据选用表中的数据为素数。
所述其中一个通信设备随机的生成所述数据选用表中的一个或多个索引,并按该索引从数据选用表中选择数据。
各通信设备生成随机数包括下述步骤:
将从数据选用表中选择的每个数据与随机种子的乘积除以固定值,取余数;
将得到的多个余数与所述固定值通过运算组合为一个随机数。
一种可在通信设备间产生相同随机数的通信***,包括相互进行通信连接的多个通信设备;所述通信设备包括:
存储模块,用于存储包含数据和数据对应的索引的数据选用表;
数据选择模块,用于根据索引号从所述存储模块的数据选用表获取数据;
随机数产生模块,用于根据从数据选用表中选择的数据,或者根据所述选择的数据和随机种子,利用随机数生成算法产生随机数;
其中,由一个通信设备中的数据选择模块随机产生所述数据选用表中的索引号,或产生所述索引号和随机种子并发送到其他通信设备。
本发明有益效果如下:
1、本发明在生成随机数时,仅需传送随机种子和位数较少的数据的索引,因此,在大量的通信设备均要得到相同随机数据的情况下,本发明能够大幅度的降低数据传送量,节约网络资源,尤其是网络带宽。
2、由于传送的索引也是随机的,而且也不用索引的数值来产生随机数,索引所对应的数据并不在网络上传送,因此,可以提高数据安全性,从而防止数据被轻易截获破解。
附图说明
图1为通信***的组网示意图;
图2为本发明中通信设备的结构示意图;
图3为本发明的流程图。
具体实施方式
为了在尽可能少的占用网络资源和提高安全性的情况下,使通信设备间能够获得相同的随机数,本发明由各通信设备分别在本端上选择同一组数据,并利用选择的数据和采用相同的算法来生成一致的随机数。根据实际应用需要,可以是其中一个客户端与服务器之间(即两个通信设备之间)产生相同的随机数,也可是多个客户端与服务器之间产生相同的随机数。
参阅图1所示,整个通信***由多个通信设备构成,各通信设备通过网络连接。通信设备间采用客户端/服务器方式通信,其中一个通信设备作为服务器,其余通信设备作为客户端。
各通信设备上保存有结构和内容相同的数据选用表(ChoiceTab),该数据选用表包括数据和数据的索引,一个最简单的数据选用表如下所示:
索引 | 数据 |
0 | 19 |
1 | 61 |
2 | 137 |
¨ | |
n | 211 |
为了使产生的随机数的随机性比较好,应使各数据应不相同,最佳的数据为不相同的素数。数据选用表也可根据需要定期进行更新,但只要保证各通信设备上的数据选用表一致即可。数据选用表可由服务器端的通信设备产生并发送到其余各通信设备。
在客户端需要与服务器端相同的随机数时,服务器端先从在本端上随机产生数据选用表中的若干个索引,并按该索引从本端的数据选用表中选择对应的数据;同时,将这些数据的索引通过网络传送到需要随机数的客户端,客户端根据索引从本端的数据选用表中选择与服务器相同的数据。
在本发明中,随机数据生成算法可以不使用随机种子,也可以使用随机种子。如果使用随机种子,则可以在初始化时或首次需要生成随机数据时,由服务器端生成并传送到客户端。服务器只向客户端传送一次随机种子,在后续产生随机数时,服务器和客户端均使用前一次产生的随机数作为随机种子。
服务器端和客户端均采用相同的随机数生成算法,将选择的数据和随机种子作为算法的输入生成随机数。由于算法相同并且其输入相同,因此,服务器端和客户端生成的随机数据必然相同。
参阅图2所示,在本发明中通信设备除了包括现有的基本功能模块外,还包括:
用于存储上述的数据选用表的存储模块;
用于根据索引号从所述存储模块的数据选用表获取数据的数据选择模块;对于服务器端的数据选择模块而言,还用于随机生成索所述数据选用表中的引号。
随机数产生模块,用于根据从数据选用表选择的数据,或者根据该数据和随机种子,利用随机数生成算法产生随机数。
参阅图3所示,在多个通信设备间产生相同随机数的处理过程如下:
步骤10、分别在服务器端和客户端的通信设备中创建相同的数据选用表和保存相同的随机数据生成算法,数据选用表包含若干个数据和该数据的索引。
步骤11、客户端连接到服务器并进行初始化后,由服务器端向客户端发送随机种子。
步骤12、服务器确定需要向客户端提供随机数时,由数据选择模块随机产生保存在本端的数据选用表中的索引号,根据该索引号从数据选用表中获得对应的若干个数据。
步骤13、服务器将产生的索引号通过网络发送到客户端。
步骤14、客户端收到索引后,由数据选择模块从本端保存的数据选用表中获得与服务器端一致的若干个数据。
步骤15、服务器端和客户端的随机数产生模块均调用相同的随机数生成算法,将保存的随机种子和从数据选用表获取的若干个数据作为该算法的输入,得到一个随机数。
下面以网络游戏中服务器端和客户端产生相同的随机数为例进一步说明本发明:
在服务器(Server)和客户端(Client)约定好包含16个素数的数据选用表(结构如上述所示)。在游戏开始时,服务器端的数据选择模块产生四个索引号i0、i1、i2、i3,其中0≤ik<15(0≤k<4),服务器将这四个索引号和一个随机种子N发送到客户端,这样保证了服务器端和客户端使用的初始化参数一致。服务器和客户端的随机数产生模块分别按下述算法产生随机数:
服务器和客户端的数据选择模块根据上述四个索引号i0、i1、i2、i3得到的四个素数为:
p0=PrimeTab[i0],p1=PrimeTab[i1],p2=PrimeTab[i2],p3=PrimeTab[i3];
令:q0=(p0*N)除以256的余数;
q1=(p1*N)除以256的余数;
q2=(p2*N)除以256的余数;
q3=(p3*N)除以256的余数。
将q0、q1、q2、q3组合成的最终随机数X为:
X=((q0*256+q1)*256)+q2)*256+q3
对于现有技术而言,向客户端传送一个随机数要占用4个字节的空间,而采用本方明的,每次一共需要传递4个数i0、i1、i2,i3,而0≤ik<15(0≤k<4),这样ik<15=1111,每个ik只占用4个位,4个数共占用16个位,最多只需2个字节即可存储,这样数据传送量减小一半。另外,由于传递过来的是4个随机数,而且只有索引号,并不直接用来产生随机数,而且是利用这4个数去选择另外的数来组合之后才生成真正可以使用的随机数,因此,被截获破解的可能性就大大降低,具有更好的网络安全性。
在本发明中,随机数据生成算法可根据需要采用不同的运算方式,但只要保证各通信设备采用的算法相同即可。如,不使用随机种子,只将选择的数据按预定的运算方式进行组合后得到一个随机数。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1、一种在通信设备间产生相同随机数的方法,其特征在于,包括下述步骤:
由一个通信设备在本设备保存的数据选用表中选择一个或多个数据,并通知其余通信设备分别从各自保存的、且与所述数据选用表相同的数据选用表中进行相同的选择;
各通信设备分别利用相同的随机数据生成算法和从数据选用表中选择的数据生成随机数。
2、如权利要求1所述的方法,其特征在于,所述数据选用表包括数据和数据的索引,所述其中一个通信设备选择数据后,将数据的索引通知其余各通信设备。
3、如权利要求2所述的方法,其特征在于,各通信设备在生成随机数时利用相同的随机种子。
4、如权利要求3所述的方法,其特征在于,首次使用的随机种子由所述其中一个通信设备生成并发送到其余通信设备,后续产生随机数时使用前次生成的随机数作为随机种子。
5、如权利要求1所述的方法,其特征在于,所述数据选用表中的数据为素数。
6、如权利要求3所述的方法,其特征在于,各通信设备生成随机数包括下述步骤:
将从数据选用表中选择的每个数据与随机种子的乘积除以固定值,取余数;
将得到的多个余数与所述固定值通过运算组合为一个随机数。
7、如权利要求1所述的方法,其特征在于,所述其中一个通信设备随机生成所述数据选用表中的一个或多个索引,并按该索引从数据选用表中选择数据。
8、如权利要求1至7任一项所述的方法,其特征在于,所述其中一个通信设备与其余各通信设备之间采用客户端/服务器(C/S)结构,所述其中一个通信设备作为服务器端,其余各设备作为客户端。
9、一种可在通信设备间产生相同随机数的通信***,包括相互进行通信连接的多个通信设备;其特征在于,所述通信设备包括:
存储模块,用于存储包含数据和数据对应的索引的数据选用表;
数据选择模块,用于根据索引号从所述存储模块的数据选用表获取数据;
随机数产生模块,用于根据从数据选用表中选择的数据,或者根据所述选择的数据和随机种子,利用随机数生成算法产生随机数;
其中,由一个通信设备中的数据选择模块随机产生所述数据选用表中的索引号,或产生所述索引号和随机种子并发送到其他通信设备。
10、如权利要求9所述的通信***,其特征在于,所述通信设备间采用客户端/服务器方式通信,由产生索引号的通信设备作为服务器端,其他通信设备作为客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100773513A CN100425022C (zh) | 2005-06-22 | 2005-06-22 | 在通信设备间产生相同随机数的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100773513A CN100425022C (zh) | 2005-06-22 | 2005-06-22 | 在通信设备间产生相同随机数的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1885774A true CN1885774A (zh) | 2006-12-27 |
CN100425022C CN100425022C (zh) | 2008-10-08 |
Family
ID=37583769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100773513A Active CN100425022C (zh) | 2005-06-22 | 2005-06-22 | 在通信设备间产生相同随机数的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100425022C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685180A (zh) * | 2012-09-13 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 显示控制的方法和装置 |
US9300736B2 (en) | 2012-09-13 | 2016-03-29 | Tencent Technology (Shenzhen) Company Limited | Display control method and device |
CN105704173A (zh) * | 2014-11-25 | 2016-06-22 | ***通信集团福建有限公司 | 一种集群***数据分布方法及服务器 |
CN110460435A (zh) * | 2019-07-01 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 数据交互方法、装置、服务器和电子设备 |
US10735189B2 (en) | 2019-07-01 | 2020-08-04 | Alibaba Group Holding Limited | Data exchange for multi-party computation |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728654B2 (en) * | 2001-07-02 | 2004-04-27 | Intrinsity, Inc. | Random number indexing method and apparatus that eliminates software call sequence dependency |
FI113924B (fi) * | 2002-09-06 | 2004-06-30 | Tellabs Oy | Menetelmä, järjestelmä ja laite dataliikenteen aitouden osoittamiseksi |
-
2005
- 2005-06-22 CN CNB2005100773513A patent/CN100425022C/zh active Active
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685180A (zh) * | 2012-09-13 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 显示控制的方法和装置 |
CN103685180B (zh) * | 2012-09-13 | 2015-11-25 | 腾讯科技(深圳)有限公司 | 显示控制的方法和装置 |
US9300736B2 (en) | 2012-09-13 | 2016-03-29 | Tencent Technology (Shenzhen) Company Limited | Display control method and device |
CN105704173A (zh) * | 2014-11-25 | 2016-06-22 | ***通信集团福建有限公司 | 一种集群***数据分布方法及服务器 |
CN105704173B (zh) * | 2014-11-25 | 2019-06-21 | ***通信集团福建有限公司 | 一种集群***数据分布方法及服务器 |
CN110460435A (zh) * | 2019-07-01 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 数据交互方法、装置、服务器和电子设备 |
US10735189B2 (en) | 2019-07-01 | 2020-08-04 | Alibaba Group Holding Limited | Data exchange for multi-party computation |
CN110460435B (zh) * | 2019-07-01 | 2021-01-01 | 创新先进技术有限公司 | 数据交互方法、装置、服务器和电子设备 |
US10924273B2 (en) | 2019-07-01 | 2021-02-16 | Advanced New Technologies Co., Ltd. | Data exchange for multi-party computation |
Also Published As
Publication number | Publication date |
---|---|
CN100425022C (zh) | 2008-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1885774A (zh) | 在通信设备间产生相同随机数的方法及*** | |
EP2107762A3 (en) | Session management system and method of controlling the same | |
US9900167B2 (en) | Document sharing method, system, and device | |
CN1859187A (zh) | 一种集中配置终端设备的方法和*** | |
CN101039212A (zh) | 一种数据快速入库方法 | |
CN1604569A (zh) | 一种鲁棒的基于点对点的流调度方法 | |
CN101056275A (zh) | 一种即时通讯***中对群组消息接收方式的设置方法 | |
CN101035140A (zh) | 一种基于sip和msrp的文件传输***及其方法 | |
CN1317860C (zh) | 一种无线接入点的负载均衡方法 | |
CN1866895A (zh) | 一种在网络游戏中用户登录的方法及*** | |
CN101039250A (zh) | 一种图片共享***和方法 | |
CN101075954A (zh) | 点对点流媒体通讯***及其超级节点资源的配置方法 | |
CN1917521A (zh) | 一种实现负载均衡的方法和***及负载均衡设备 | |
CN102572012A (zh) | 一种消息处理方法、交换机及*** | |
CN1951017A (zh) | 一种顺序压缩/解压缩数据的方法及装置 | |
CN1925458A (zh) | 一种网络端口地址转换的实现方法 | |
CN1622553A (zh) | 一种基于因特网标准文件传输协议的文件断点上载方法 | |
CN1758801A (zh) | 移动通信终端中的消息发送设备和方法 | |
CN1842062A (zh) | 一种即时通讯离线应答的方法和*** | |
CN101309259B (zh) | 一种分布式图像显示方法 | |
CN101447926A (zh) | 基于点对点的数据传输***及方法 | |
CN101068162A (zh) | 一种实现告警位置条件选择的方法 | |
CN101075903A (zh) | 网络资源配置方法和装置 | |
CN108242931B (zh) | 一种数据压缩提供方法 | |
CN101035260A (zh) | 一种访问视频设备的方法和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |