不可逆加密算法

合集下载

用户帐号密码的加密方法

用户帐号密码的加密方法

用户帐号密码的加密方法1. 不可逆性:用户密码一旦加密后,就不能再被还原回明文,只能通过输入正确的密码才能取得正确的解密结果。

2. 抗攻击性:加密算法必须具有一定的防抗攻击性,如抵御暴力破解、字典攻击、彩虹表攻击等。

3. 安全性:加密算法必须具有一定的安全性,保护用户的密码不被黑客或其他人员通过一定技术手段获取。

4. 易实现性:加密算法的实现应该比较简单,易于编写和部署。

下面就介绍几种常见的密码学加密方法:1. MD5加密(1)输出结果长度固定,32个字符。

(2)不可逆性,输入的密码无法还原为明文。

MD5的核心原理是通过一系列位运算和逻辑运算,将任意长度的消息转变为固定长度的消息摘要。

该算法已经被广泛应用于各种系统和网络安全领域,它的安全性目前已经被证实已经受到一定程度的破解。

2. SHA-256加密(3)抗攻击性更强。

SHA-256也是一种基于消息摘要算法的加密方式,它的核心原理是利用了一系列的位运算、逻辑运算和消息扩展等操作,从而将任意长度的消息转变为固定长度的消息摘要。

SHA-256算法具有多项技术改进,可以有效抵御各种攻击,目前被广泛应用于浏览器、操作系统等系统中。

3. AES加密AES加密,全称高级加密标准,也是一种常见的密码学加密方法。

它是一个对称加密算法,与MD5、SHA算法不同,AES需要使用一个“密钥”才能进行加密和解密(MD5和SHA 算法则不需要)。

(1)输出结果长度与原文长度相同。

(3)安全性高,即使黑客拿到了密文,也难以解密。

(4)易实现性,加解密速度较快,适用于大规模数据加密。

AES目前已经成为了世界上应用最广泛的对称加密算法之一,在电子商务、金融、信息安全等领域得到了广泛应用。

用户账号密码的加密方法是计算机系统中一项非常重要的安全措施。

常见的密码学加密方法包括MD5、SHA-256和AES等。

选择合适的加密方式应该根据具体情况来决定,以确保最大程度地保护用户账户安全。

不可逆加密算法范文

不可逆加密算法范文

不可逆加密算法范文不可逆加密算法(也称为单向散列函数)是一种数学函数,它将明文数据转化为固定长度的输出,这个过程是不可逆的,即无法通过输出得到原始的输入值。

不可逆加密算法常常用于密码存储和数据完整性验证等场景,保证了数据的安全性。

常见的不可逆加密算法包括MD5(Message Digest Algorithm 5)、SHA-1(Secure Hash Algorithm 1)、SHA-256等。

这些算法通过一系列复杂的转换过程将输入数据变换为输出数据,确保了输出数据的唯一性和随机性。

1.数据分块:将输入数据按固定长度进行分块处理,每个分块称为消息块。

2.初始化:初始化算法所需的常量和变量,为后续的计算做准备。

3.压缩:对每个消息块进行一系列复杂的位运算,包括异或、与、或以及循环移位等。

这些位运算和转换操作的组合是算法设计者根据密码学原理经过严密研究得出的。

4.输出:将最后一个消息块经过计算得到的结果输出,即为加密后的数据。

不可逆加密算法的最大特点是不可逆,即无法通过输出得到原始的输入值。

这是因为在压缩步骤中,很多信息被丢失了,输出数据无法映射回原始数据。

这也是为什么不可逆加密算法被广泛应用于密码存储和数据完整性验证等场景。

然而,不可逆加密算法也存在一些安全性问题。

首先,由于不可逆性质,无法通过输出确定唯一的输入,这导致了可能存在多个输入产生相同的输出,即碰撞。

其次,由于计算能力的提升,一些不可逆加密算法的安全性已经受到了挑战,可以被暴力破解或者利用预计算的数据表进行反向查询。

为了增强不可逆加密算法的安全性,可以采取以下策略:1.增加算法的复杂性:设计更复杂的位运算和转换操作,使得破解算法变得更为困难。

2.增加输入数据的随机性:在输入数据中添加随机数或者时间戳等因素,增加输出数据的随机性和复杂性。

3.增加密钥长度:加入密钥的概念,通过密钥对输入数据进行加密,增加破解的难度。

4.使用更安全的算法:采用目前认为安全性更高的算法,如SHA-256等。

计算机三级网络技术考点-网络安全技术的知识

计算机三级网络技术考点-网络安全技术的知识

计算机三级网络技术考点-网络安全技术的知识最近有网友想了解下计算机三级网络技术考点-网络安全技术的知识,所以店铺就整理了相关资料分享给大家,具体内容如下.希望大家参考参考计算机三级网络技术考点-网络安全技术的知识1、网络管理包括五个功能:配置管理,故障管理,性能管理,计费管理和安全管理。

(各自目标、概念、功能)(配置管理的目标是掌握和控制网络的配置信息。

现代网络设备由硬件和设备驱动组成。

故障管理最主要的作用是通过提供网络管理者快速的检查问题并启动恢复过程的工具,使网络的可靠性得到增强。

故障就是出现大量或严重错误需要修复的异常情况。

故障管理是对计算机网络中的问题或故障进行定位的过程。

故障标签就是一个监视网络问题的前端进程。

性能管理的目标是衡量和呈现网络特性的各个方面,使网络的性能维持在一个可以接受的水平上。

性能管理包括监视和调整两大功能。

记费管理的目标是跟踪个人和团体用户对网络资源的使用情况,对其收取合理的费用。

记费管理的主要作用是网络管理者能测量和报告基于个人或团体用户的记费信息,分配资源并计算用户通过网络传输数据的费用,然后给用户开出帐单。

安全管理的目标是按照一定的策略控制对网络资源的访问,保证重要的信息不被未授权用户访问,并防止网络遭到恶意或是无意的攻击。

安全管理是对网络资源以及重要信息访问进行约束和控制。

)2、网络管理的目标与网络管理员的职责:P1453、管理者/代理模型:管理者实质上是运行在计算机操作系统之上的一组应用程序,管理者从各代理处收集信息,进行处理,获取有价值的管理信息,达到管理的目的.代理位于被管理的设备内部,它把来自管理者的命令或信息请求转换为本设备特有的指令,完成管理者的指示,或返回它所在设备的信息。

管理者和代理之间的信息交换可以分为两种:从管理者到代理的管理操作;从代理到管理者的事件通知。

4、网络管理协议(1)概念:是网络管理者和代理之间进行信息的规范(2)网络管理协议是高层网络应用协议,它建立在具体物理网络及其基础通信协议基础上,为网络管理平台服务。

计算机相关知识--加密解密的概念与算法

计算机相关知识--加密解密的概念与算法

加密解密的概念与算法1.1 为什么需要加密解密?在客户端与服务器进行交互时,必然涉及到交互的报文(或者通俗的讲,请求数据与返回数据),如果不希望报文进行明文传输,则需要进行报文的加密与解密。

所以加密的主要作用就是避免明文传输,就算被截获报文,截获方也不知道报文的具体内容。

1.2 对称加密,单向加密,非对称加密的介绍与区别加密分为对称加密和非对称加密:对称加密效率高,但是解决不了秘钥的传输问题;非对称加密可以解决这个问题,但效率不高。

(其中https是综合了对称加密和非对称加密算法的http协议。

)1.2.1 对称加密采用单钥密的加密方法,同一个密钥可以同时用来加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

即约定一个秘钥,客户端使用这个秘钥对传输参数进行加密并提交至服务端,服务端使用同样的秘钥进行解密;1)常用的对称加密算法:DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,支持128、192、256、512位密钥的加密;2)算法特征:加密方和解密方使用同一个密钥;加密解密的速度比较快,适合数据比较长时的使用;密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;3)加密工具:openssl,它使用了libcrypto加密库、libssl库即TLS/SSL协议的实现库等。

TLS/SSL是基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库。

1.2.2 单向散列加密单向加密又称为不可逆加密算法,其密钥是由加密散列函数生成的。

单向散列函数一般用于产生消息摘要,密钥加密等1)常用的单向散列加密算法:MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法,非可逆,相同的明文产生相同的密文;SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值。

C#开发中常用的加密解密方法

C#开发中常用的加密解密方法

C#开发中常⽤的加密解密⽅法相信很多⼈在开发过程中经常会遇到需要对⼀些重要的信息进⾏加密处理,今天给⼤家分享我个⼈总结的⼀些加密算法:常见的加密⽅式分为可逆和不可逆两种⽅式可逆:RSA,AES,DES等不可逆:常见的MD5,SHAD等⼀、MD5消息摘要算法我想这是⼤家都常听过的算法,可能也⽤的⽐较多。

那么什么是MD5算法呢?MD5全称是message-digest algorithm 5,简单的说就是单向的加密,也就是说⽆法根据密⽂推导出明⽂。

MD5主要⽤途:1、对⼀段信息⽣成信息摘要,该摘要对该信息具有唯⼀性,可以作为数字签名2、⽤于验证⽂件的有效性(是否有丢失或损坏的数据)3、对⽤户密码的加密4、在哈希函数中计算散列值从上边的主要⽤途中我们看到,由于算法的某些不可逆特征,在加密应⽤上有较好的安全性。

通过使⽤MD5加密算法,我们输⼊⼀个任意长度的字节串,都会⽣成⼀个128位的整数。

所以根据这⼀点MD5被⼴泛的⽤作密码加密。

下⾯我就像⼤家演⽰⼀下怎样进⾏密码加密。

⾸先需要引⼊命名空间,先看⼀个⽐较简单的MD5加密的例⼦:using System.Security;using System.Security.Cryptography;public string ToMD5(string strs){MD5 md5 = new MD5CryptoServiceProvider();byte[] bytes = Encoding.Default.GetBytes(strs);//将要加密的字符串转换为字节数组byte[] encryptdata = puteHash(bytes);//将字符串加密后也转换为字符数组return Convert.ToBase64String(encryptdata);//将加密后的字节数组转换为加密字符串}这⾥我们需要注意的是,不论是在加密的过程中,加密前要将加密字符串转为字节数组,加密后也要⽣成密⽂的字节数据,然后再转化为密⽂。

计算机网络复习题

计算机网络复习题

选择题复习1.电视广播是一种()传输的例子。

A. 单工B. 半双工C. 全双工D. 自动2.在计算机局域网中,普遍采用的是用()进行差错检测控制。

A. 垂直冗余检验B. 纵向冗余校验C. 循环冗余校验D. 检验和3.调制解调技术主要用于()的通信方式中。

A.数字信道传输模拟数据B.模拟信道传输模拟数据C.数字信道传输数字数据D.模拟信道传输数字数据4.在网络中,将语音与计算机产生的数字、文字、图形与图像同时传输,必须先将语音信号数字化。

利用()可以将语音信号数字化。

A.差分Manchester编码技术B.QAM技术C.Manchester编码技术D.PCM编码技术5.()适用于世界范围内的办公网络。

A. 局域网B. 广域网C. 城域网D.互联网6.以下()不属于网络协议的分层原则。

A. 各层相对独立。

某一层的内部变化不影响另一层B. 层次数量适中,不应过多,也不宜太少C. 每层具有特定的功能。

类似功能尽量集中在同一层D. 高层对低层提供的服务与低层如何完成无关7.()不是总线型拓朴结构的优点。

A. 结构简单灵活B. 可靠性较高C. 硬件设备多,造价高D. 易于安装、配置,使用和维护方便8.()是星型网络的优点。

A. 中心节点出故障时,才会导致整个网络的瘫痪B. 集线器是网络的瓶颈C. 当负荷过重时,系统响应和性能下降较快D. 网络结构简单9.()下列哪一项描述了网络体系结构中得分层概念A. 保持网络灵活且易于修改B. 所有的网络体系结构都使用相同的层次名称和功能C. 把相关的网络功能组合在一层中D. A和C10.关于OSI参考模型中的“服务”与“协议”的关系,正确的说法是()。

A. “协议”是“垂直”的,“服务”是“水平”的B. “协议”是相邻层之间的通信规则C. “协议”是“水平”的,“服务”是“垂直”的D. “服务”是对等层之间的通信规则11.在OSI 参考模型中能实现路由选择、拥塞控制与网络互连功能的层是()A. 传输层B. 应用层C. 网络层D. 物理层12.在采用分组交换技术的通信子网中,每个中间节点必须在多条传输路径中作出路由选择,即()。

PHP实现sha1加密AES算法加密解密数据

PHP实现sha1加密AES算法加密解密数据

PHP实现sha1加密AES算法加密解密数据SHA1加密算法是一种单向哈希函数,用于对数据进行不可逆的加密。

AES算法是一种对称加密算法,用于对数据进行加密和解密。

下面是一个PHP实现SHA1加密和AES算法加密解密数据的示例:1.SHA1加密算法实现:```phpfunction sha1_encrypt($data)return sha1($data);```2.AES算法加密解密实现:```phpfunction aes_encrypt($data, $key)$iv = openssl_random_pseudo_bytes(16);$encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);return base64_encode($iv . $encrypted);function aes_decrypt($encryptedData, $key)$data = base64_decode($encryptedData);$iv = substr($data, 0, 16);$encrypted = substr($data, 16);return openssl_decrypt($encrypted, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);```使用示例:```php$data = 'Hello World';$key = 'ThisIsASecretKey';//SHA1加密$sha1Encrypted = sha1_encrypt($data);echo 'SHA1 encrypted: ' . $sha1Encrypted . '<br>';//AES加密$aesEncrypted = aes_encrypt($data, $key);echo 'AES encrypted: ' . $aesEncrypted . '<br>';//AES解密$aesDecrypted = aes_decrypt($aesEncrypted, $key);echo 'AES decrypted: ' . $aesDecrypted . '<br>';```注意:在实际使用中,建议对密钥进行适当的处理,如使用加盐等方法增加安全性。

不可逆加密算法和随机算法的分析与实现

不可逆加密算法和随机算法的分析与实现

512008.01理论探讨不可逆加密算法和随机算法的分析与实现摘要:本文主要是利用明文密码和密文密码之间的不可逆性,对应用软件密码进行加密,可以防止密码被破译或极大地增加其被破译难度和破译时间。

初步探讨了增强这种算法安全性的几种相关加密算法,对其中的随机算法进行重点分析,改进并实现了随机函数的生成算法。

根据分析可以看出这种随机算法很好地提高了不可逆加密算法的加密强度和加密速度。

关键词:加密不可逆强度随机算法目前,加密算法被广泛地应用于文件、数字签名、计算机网络的保密与安全等方面,其中比较成熟和流行的加密算法有DE S加密算法、RSA加密算法等,正在研究和开发的加密算法有刘氏高强度公开加密算法等。

它们将明文用选定的密钥通过某种加密算法把明文变成密文,密文还可以用密钥通过该解密算法变换成原来的明文,即明文和密文之间具有可逆性。

应用软件一般都需要输入正确的密码(即口令)之后,才可以跳过启动界面,进入到软件的使用界面。

这个密码就相当于上面介绍的明文,这种明文被称为明文密码。

它应该存储在应用软件内部的某个文件或某几个文件中,只不过在存储明文密码时,是经过加密的。

这种经过加密后的密码称为密文密码。

对于明文密码和密文密码之间具有可逆性的加密算法研究的比较多,而且比较成熟,下面讨论明文密码和密文密码之间不可逆加密算法。

不可逆加密算法应用软件在判断用户输入密码是否正确时,不是采用将密文密码解密成明文密码,再和用户输入的明文密码进行比较来判断用户输入的密码是否正确,而是采用将用户输入的明文密码加密成密文密码后,再和应用软件保存的密文密码进行比较来判断用户输入的密码是否正确。

这样就不需要对密文密码进行解密,即只有加密过程,没有解密过程,可以使用一些不可逆的加密算法来增强加密的安全性。

采用的非线性不可逆加密算法:其中yi为加密后的密文密码向量,x i为待加密的明文密码向量,A为映射矩阵,zi为非线性函数向量。

当采用有密钥时,A为根据密钥选定的一个映射矩阵,随着密钥的变化而变化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作者简介:张小飞(1981-),男,硕士,连云港人,主要研究方向为网络信息安全;李佩娟(1982-),女博士研究生,主要从事测控技术与导航控制方面的研究。

不可逆加密算法和随机算法的分析与实现张 小 飞1 李 佩 娟21(国网南京自动化研究院 信息网络安全实验室 南京 210003)2(东南大学 仪器科学与工程学院 南京210096)摘要:利用明文密码和密文密码之间的不可逆性,对应用软件密码进行加密,可以防止密码被破译或极大地增加其被破译难度和破译时间。

初步探讨了增强这种算法安全性的几种相关加密算法,对其中的随机算法进行重点分析,改进并实现了随机函数的生成算法。

根据分析可以看出这种随机算法很好地提高了不可逆加密算法的加密强度和加密速度。

关键词:加密;不可逆;强度;随机算法Research & Realization of Irreversible Encryption Algorithm and Random AlgorithmZHANG Xiao-fei 1 LI Pei-juan 21(Introduction to Information & Network Security Laboratory of State Grid Corporation of China, Nanjing210003)2(School of Instrument Science and Engineering, Southeast University, Nanjing 210096)Abstract: The irreversibility between plaintext and ciphertext is used to encrypt the cipher of application software. Therefore the decryption time and difficulty can be greatly increased, and the cipher can be protected from decryption in this algorithm. The paper also tentatively discusses several related encryption algorithms, especially improves and realizes the random algorithm. The analyses confirmed that this kind of random algorithm greatly improves the strength and the speed of encryption algorithm.Key words: encryption; irreversibility; strength; random algorithm1 引 言目前,加密算法被广泛地应用于文件、数字签名、计算机网络的保密与安全等方面,其中比较成熟和流行的加密算法有 DES 加密算法、RSA 加密算法等,正在研究和开发的加密算法有刘氏高强度公开加密算法等。

它们将明文用选定的密钥通过某种加密算法把明文变成密文,密文还可以用密钥通过该解密算法变换成原来的明文,即明文和密文之间具有可逆性。

应用软件一般都需要输入正确的密码(即口令)之后,才可以跳过启动界面,进入到软件的使用界面。

这个密码就相当于上面介绍的明文,这种明文被称为明文密码。

它应该存储在应用软件内部的某个文件或某几个文件中,只不过在存储明文密码时,是经过加密的。

这种经过加密后的密码称为密文密码。

对于明文密码和密文密码之间具有可逆性的加密算法研究的比较多,而且比较成熟,下面讨论明文密码和密文密码之间不可逆加密算法。

2 不可逆加密算法应用软件在判断用户输入密码是否正确时,不是采用将密文密码解密成明文密码,再和用户输入的明文密码进行比较来判断用户输入的密码是否正确,而是采用将用户输入的明文密码加密成密文密码后,再和应用软件保存的密文密码进行比较来判断用户输入的密码是否正确。

这样就不需要对密文密码进行解密,即只有加密过程,没有解密过程,可以使用一些不可逆的加密算法来增强加密的安全性。

采用的非线性不可逆加密算法:i i i z Ax y +=其中y i 为加密后的密文密码向量,x i 为待加密的明文密码向量,A 为映射矩阵,z i 为非线性函数向量。

当采用有密钥时,A 为根据密钥选定的一个映射矩阵,A 随着密钥的变化而变化。

当密钥相同时,A 也相同。

z i 也可以和A 相同随着密钥的变化而变化,也可以不变。

当采用无密钥时,A 可以是系统中给定的一个固定的映射矩阵或随机的映射矩阵。

明文密码向量 x r = ′i x = [x 1, x 2,…, x m ] 密文密码向量 y v = ′i y = [y 1, y 2,…, y n ]非线性函数向量 z v = ′i z = [z 1,z 2,…, z n ] 映射矩阵 A = ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡………nm n n m m a a a a a a a a a 212222111211::: 如果最后密文密码为 )~,~,(i i z A y f y =,当将映射矩阵A 的特征信息A ~和非线性函数向量i z 的特征信息i z ~保存到密文密码中时,加密就具有可逆性。

如果采用)(i y f y =,不将映射矩阵A 的特征信息A ~和非线性函数i z 的特征信息i z ~保存到密文密码中,则加密算法就具有不可逆性。

不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文密码后由系统直接经过加密算法处理成密文密码,加密后的密文数据使用穷举法很难破解,只有重新输入明文密码,并再次经过同样不可逆的加密算法处理,得到相同的密文密码并被系统重新识别后,才能真正解密。

显然,在不可逆算法的加密过程中,加密是明文密码,解密还得是明文密码,而所谓解密,实际上就是将明文密码重新加一次密,再将得到的密文密码进行比对。

在此基础上可以采用其他手段增强加密的可靠性。

如可以将密文密码保存于文件制定位置或者拆开保存在几个文件中;可以采用密文密码长度为定长的加密方式,使破译者不知道原来明文密码是几位;可以采用加密后的密文密码的每个字符与所有明文密码有关系,这样产生的明文密码即使是一位不一样,加密后的密文密码的所有位也都不一样。

3 随机加密算法作为明文密码的字符共有95个(包括26个大写英文字母,26个小写英文字母,10个数字键,键盘上的其他33个符号)。

因此明文密码空间为 95i ,其中 i 为明文密码长度。

密文密码空间的大小与所采用的字符种类、数量和长度有关。

采用随机加密算法,将随机函数生成的非线性函数向量(随机值i z )加入密文(i Ax )中得到新的密文(i i i z Ax y +=)。

显然这种方法得到的密文密码的ASCII 值有可能低于32或超过126,可以采用与126取余、低于32重新生成、输出比例变化等各种办法,来保证密文密码的ASCII 值在32至126内。

也可以不做这一步,使密文密码有一部分(ASCII码值在32-126以外)是乱码,但这样做容易引起攻击者的怀疑。

加密后的密文密码中的前若干位可以用来保存随机加密函数的特征信息值,但不保存其它特征值。

这样就会产生一个密文密码对应多个明文密码的现象,使攻击者利用密文盲检测出明文的几率大大降低。

4 随机数生成器随机加密算法最核心的问题是随机数的生成。

最常用算法是通过取系统时间作为随机加密函数,也可以通过随机函数Random(Limit)来实现。

约翰.冯诺伊曼在1946年提出了以下的计算随机数列的机制:取一个N位数,将其平方,并从结果(表示为一个2N位的数,如果需要在左补0)中取出中间的N位作为数列里的下一个数。

例如,如果N取4,并以1234作为起始点,那么随机数列中的后面几个数分别为5227、3215、3362、3030和1809,这种方法称为中方方法(middle-squared method)。

编程实现如下:Var MidSqSeed : integer;Function GetMidSquareNumber : integer;Var Seed : longint;BeginSeed := longint (MidSqSeed) * MidSqSeed;MidSqSeed := (Seed div 100) mod 10000;Result := MidSqSeed;End;中方方法在实际应用中有很大的限制。

例如以1234作为种子开始,中方方法可以生成55个随机数,而所有后续的随机数都将是0。

另外,如果从一个特殊的数例如4100开始,则得到的数列将是8100、6100、2100、4100,无限循环下去。

还有一些诸如此类的不合理数列。

即使采用16位整数作为种子,大约生成了50到60个随机数后,也可能生成一个循环数列或者是一系列0。

所以加密算法中的随机数生成器不建议采用中方方法。

1949年D.H.Lehmer提出了另一种随机数生成方法,即线性同余方法(linear congruential method)。

选择三个数,m、a和c,并由一个开始的种子X0使用以下公式(mod为取模运算)来生成X i的数列:X n+1= (aX n+c) mod m如果适当地选择了这三个数,所生成的数列则是随机的。

在Delphi中标准系统随机数生成器分别使用以下值:即a=134775813($8088405),c=1,而m=232;其中的X0(随机数种子全局变量RandSeed),可以直接设置,也可以使用Randomize过程由系统时钟来设置。

这样很好地保证了随机数种子的随机性,否则很有可能由于每次选取的X0相同而造成数列的一致,这是由算法的确定性造成的。

既然这样,就可以考虑选择使用自己设定的合理的a、c和m值,增强这种线性同余方法的随机性。

设定a、c和m有一些规则,一般会将m选择为尽可能地大,从而使得重复的周期也尽可能大。

它至少要大到操作系统的字长,例如32位的操作系统选取m的大小为32位,64位的操作系统选取m的大小为64位。

a要与m互质,c通常选择0或1,不过一般规则是如果选择一个非0的值,就必须保证c和m互质。

如果选择c为0。

生成器就称为乘法线性同余生成器(multiplicative linear congruential generator)。

为了确保利用此生成器可以得到一个最大的周期,就必须保证m是质数。

此类随机数生成器中,最著名并且经受住大量统计测试的要算最小标准随机数生成器(minimal standard random number generator),是由Stophen Park和Keith Miller于1988年提出的,此生成器的a=16807,m=2147483647(或231-1)。

相关文档
最新文档