不可逆加密算法
用户帐号密码的加密方法
![用户帐号密码的加密方法](https://img.taocdn.com/s3/m/5675e82753d380eb6294dd88d0d233d4b14e3f04.png)
用户帐号密码的加密方法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等。
选择合适的加密方式应该根据具体情况来决定,以确保最大程度地保护用户账户安全。
不可逆加密算法范文
![不可逆加密算法范文](https://img.taocdn.com/s3/m/9b921c9b51e2524de518964bcf84b9d528ea2c9f.png)
不可逆加密算法范文不可逆加密算法(也称为单向散列函数)是一种数学函数,它将明文数据转化为固定长度的输出,这个过程是不可逆的,即无法通过输出得到原始的输入值。
不可逆加密算法常常用于密码存储和数据完整性验证等场景,保证了数据的安全性。
常见的不可逆加密算法包括MD5(Message Digest Algorithm 5)、SHA-1(Secure Hash Algorithm 1)、SHA-256等。
这些算法通过一系列复杂的转换过程将输入数据变换为输出数据,确保了输出数据的唯一性和随机性。
1.数据分块:将输入数据按固定长度进行分块处理,每个分块称为消息块。
2.初始化:初始化算法所需的常量和变量,为后续的计算做准备。
3.压缩:对每个消息块进行一系列复杂的位运算,包括异或、与、或以及循环移位等。
这些位运算和转换操作的组合是算法设计者根据密码学原理经过严密研究得出的。
4.输出:将最后一个消息块经过计算得到的结果输出,即为加密后的数据。
不可逆加密算法的最大特点是不可逆,即无法通过输出得到原始的输入值。
这是因为在压缩步骤中,很多信息被丢失了,输出数据无法映射回原始数据。
这也是为什么不可逆加密算法被广泛应用于密码存储和数据完整性验证等场景。
然而,不可逆加密算法也存在一些安全性问题。
首先,由于不可逆性质,无法通过输出确定唯一的输入,这导致了可能存在多个输入产生相同的输出,即碰撞。
其次,由于计算能力的提升,一些不可逆加密算法的安全性已经受到了挑战,可以被暴力破解或者利用预计算的数据表进行反向查询。
为了增强不可逆加密算法的安全性,可以采取以下策略:1.增加算法的复杂性:设计更复杂的位运算和转换操作,使得破解算法变得更为困难。
2.增加输入数据的随机性:在输入数据中添加随机数或者时间戳等因素,增加输出数据的随机性和复杂性。
3.增加密钥长度:加入密钥的概念,通过密钥对输入数据进行加密,增加破解的难度。
4.使用更安全的算法:采用目前认为安全性更高的算法,如SHA-256等。
计算机三级网络技术考点-网络安全技术的知识
![计算机三级网络技术考点-网络安全技术的知识](https://img.taocdn.com/s3/m/e4a7a9baf424ccbff121dd36a32d7375a417c68d.png)
计算机三级网络技术考点-网络安全技术的知识最近有网友想了解下计算机三级网络技术考点-网络安全技术的知识,所以店铺就整理了相关资料分享给大家,具体内容如下.希望大家参考参考计算机三级网络技术考点-网络安全技术的知识1、网络管理包括五个功能:配置管理,故障管理,性能管理,计费管理和安全管理。
(各自目标、概念、功能)(配置管理的目标是掌握和控制网络的配置信息。
现代网络设备由硬件和设备驱动组成。
故障管理最主要的作用是通过提供网络管理者快速的检查问题并启动恢复过程的工具,使网络的可靠性得到增强。
故障就是出现大量或严重错误需要修复的异常情况。
故障管理是对计算机网络中的问题或故障进行定位的过程。
故障标签就是一个监视网络问题的前端进程。
性能管理的目标是衡量和呈现网络特性的各个方面,使网络的性能维持在一个可以接受的水平上。
性能管理包括监视和调整两大功能。
记费管理的目标是跟踪个人和团体用户对网络资源的使用情况,对其收取合理的费用。
记费管理的主要作用是网络管理者能测量和报告基于个人或团体用户的记费信息,分配资源并计算用户通过网络传输数据的费用,然后给用户开出帐单。
安全管理的目标是按照一定的策略控制对网络资源的访问,保证重要的信息不被未授权用户访问,并防止网络遭到恶意或是无意的攻击。
安全管理是对网络资源以及重要信息访问进行约束和控制。
)2、网络管理的目标与网络管理员的职责:P1453、管理者/代理模型:管理者实质上是运行在计算机操作系统之上的一组应用程序,管理者从各代理处收集信息,进行处理,获取有价值的管理信息,达到管理的目的.代理位于被管理的设备内部,它把来自管理者的命令或信息请求转换为本设备特有的指令,完成管理者的指示,或返回它所在设备的信息。
管理者和代理之间的信息交换可以分为两种:从管理者到代理的管理操作;从代理到管理者的事件通知。
4、网络管理协议(1)概念:是网络管理者和代理之间进行信息的规范(2)网络管理协议是高层网络应用协议,它建立在具体物理网络及其基础通信协议基础上,为网络管理平台服务。
计算机相关知识--加密解密的概念与算法
![计算机相关知识--加密解密的概念与算法](https://img.taocdn.com/s3/m/1494f586cc7931b764ce1581.png)
加密解密的概念与算法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#开发中常用的加密解密方法](https://img.taocdn.com/s3/m/706fb7d2cf2f0066f5335a8102d276a200296026.png)
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);//将加密后的字节数组转换为加密字符串}这⾥我们需要注意的是,不论是在加密的过程中,加密前要将加密字符串转为字节数组,加密后也要⽣成密⽂的字节数据,然后再转化为密⽂。
计算机网络复习题
![计算机网络复习题](https://img.taocdn.com/s3/m/5b565904eff9aef8941e0666.png)
选择题复习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算法加密解密数据](https://img.taocdn.com/s3/m/a3e6a0143069a45177232f60ddccda38376be1a8.png)
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>';```注意:在实际使用中,建议对密钥进行适当的处理,如使用加盐等方法增加安全性。
不可逆加密算法和随机算法的分析与实现
![不可逆加密算法和随机算法的分析与实现](https://img.taocdn.com/s3/m/d9f69b2f4b35eefdc8d33334.png)
512008.01理论探讨不可逆加密算法和随机算法的分析与实现摘要:本文主要是利用明文密码和密文密码之间的不可逆性,对应用软件密码进行加密,可以防止密码被破译或极大地增加其被破译难度和破译时间。
初步探讨了增强这种算法安全性的几种相关加密算法,对其中的随机算法进行重点分析,改进并实现了随机函数的生成算法。
根据分析可以看出这种随机算法很好地提高了不可逆加密算法的加密强度和加密速度。
关键词:加密不可逆强度随机算法目前,加密算法被广泛地应用于文件、数字签名、计算机网络的保密与安全等方面,其中比较成熟和流行的加密算法有DE S加密算法、RSA加密算法等,正在研究和开发的加密算法有刘氏高强度公开加密算法等。
它们将明文用选定的密钥通过某种加密算法把明文变成密文,密文还可以用密钥通过该解密算法变换成原来的明文,即明文和密文之间具有可逆性。
应用软件一般都需要输入正确的密码(即口令)之后,才可以跳过启动界面,进入到软件的使用界面。
这个密码就相当于上面介绍的明文,这种明文被称为明文密码。
它应该存储在应用软件内部的某个文件或某几个文件中,只不过在存储明文密码时,是经过加密的。
这种经过加密后的密码称为密文密码。
对于明文密码和密文密码之间具有可逆性的加密算法研究的比较多,而且比较成熟,下面讨论明文密码和密文密码之间不可逆加密算法。
不可逆加密算法应用软件在判断用户输入密码是否正确时,不是采用将密文密码解密成明文密码,再和用户输入的明文密码进行比较来判断用户输入的密码是否正确,而是采用将用户输入的明文密码加密成密文密码后,再和应用软件保存的密文密码进行比较来判断用户输入的密码是否正确。
这样就不需要对密文密码进行解密,即只有加密过程,没有解密过程,可以使用一些不可逆的加密算法来增强加密的安全性。
采用的非线性不可逆加密算法:其中yi为加密后的密文密码向量,x i为待加密的明文密码向量,A为映射矩阵,zi为非线性函数向量。
当采用有密钥时,A为根据密钥选定的一个映射矩阵,随着密钥的变化而变化。
关于信息安全方面的数据加密技术
![关于信息安全方面的数据加密技术](https://img.taocdn.com/s3/m/af334600ff00bed5b8f31d07.png)
1、 对称加密技术
对称加密解密的图示
常用的对称加密算法:DES(数据加密标准)、3DES(三重DES)、RC-5、IDEA(国际数据加密算法)
2、非对称加密技术
与对称加密技术不同,非对称加密技术需要两个密钥:公用密钥(公钥)和私有密钥(私钥)。
常用的非对称加密算法:RSA公钥加密算法、Elgamal、ECC(椭圆曲线加密算法)
3、不可逆加密技术
不可逆加密的特征是加密过程不需要密钥,并且经过加密的数据无法解密,只有同样的输入数据经过同样的不可逆算法才能得到同样的加密数据。
【例题】下列选项中,防范网络监听最有效的是()
A、安装防火墙B、采用无线网络传输C、数据加密D、漏洞扫描
关于信息安全方面的数据加密技术
数据加密技术是最常用的安全保密手段,数据加密技术的关键在于加密/解密算法和密钥管理。
数据加密的基本过程就是对原来为明文的文件或数据按某种加密算法进行处理,使其成为不可读的一段代码,通常称为“密文”。密文只能在输入相应的密钥之后才能显示出原来的内容,通过这样的途径保护数据不被窃取。数据加密技术包括两个元素:算法和密钥。
公钥可以对外公布,私钥只能由持有人知道。正是因为加密和解密使用的是两个不同的密钥,所以这种加密技术称为非对称加密技术。
非对称加பைடு நூலகம்的体制模型
非对称加密算法实现机密信息交换的过程是:B方生成一对密钥并将其中的一把作为公用密钥向其他方公开;得到该公用密钥的A方使用该密钥对机密信息进行加密后再发送给B方;B方再用自己保存的另一把私有密钥对加密后的信息进行解密。B方只能用其私有密钥解密由其公用密钥加密后的信息。同理,为了交换信息,A方也可产生一对密钥并将公用密钥告知B方。
几种经典的hash算法
![几种经典的hash算法](https://img.taocdn.com/s3/m/e968d742a88271fe910ef12d2af90242a895abdc.png)
几种经典的hash算法
1.MD5算法: MD5是一种不可逆的加密算法,它把任意长度的输入映射为一个128位的输出值。
MD5和SHA-1一样,都会生成一个160位的哈希值,这个哈希值被称为消息摘要或指纹。
MD5有很多应用,如文件校验、抗篡改等。
2.SHA算法: SHA系列算法,它是包括SHA0、SHA1、SHA224、SHA256、SHA384、SHA512等多种不同的算法,主要用来对数据进行安全性和完整性的验证。
它们都是密码学中经典的hash算法,它们能够把任意长度的输入映射为固定长度的输出,并且不可逆。
3.CRC算法: CRC(Cyclic Redundancy Check)算法是一种常用的数据校验算法,它可以用来检测数据在传输过程中是否出现差错。
它是一种哈希算法,它把任意长度的输入映射为固定长度的输出,并且不可逆。
世界五大顶级密码
![世界五大顶级密码](https://img.taocdn.com/s3/m/6ec3cdfe185f312b3169a45177232f60dccce756.png)
世界五大顶级密码一、介绍随着科技的发展,越来越多的人开始使用密码来保护自己的财产和数据安全。
密码技术也在不断发展,各种顶级密码技术也不断出现。
本文将介绍世界五大顶级密码技术,以便大家能够更好地保护自己的数据安全。
二、AES加密AES(高级加密标准)是一种对称加密算法,它可以使用128、192、256位的密钥来加密和解密数据。
AES加密在世界上被广泛使用,它的安全性很高,能够有效地防止数据泄露。
AES加密算法的特点主要有:1. AES加密算法使用128、192、256位的密钥,可以有效防止数据泄露;2. AES加密算法支持多种模式,如CBC、ECB、CFB等;3. AES加密算法支持多种填充模式,如NoPadding、PKCS5Padding等;4. AES加密算法的安全性非常高,能够有效防止数据泄露。
三、RSA加密RSA加密是一种非对称加密算法,它使用一对公钥和私钥来加密和解密数据。
RSA加密算法是目前最常用的非对称加密算法,它的安全性很高,能够有效防止数据泄露。
RSA加密算法的特点主要有:1. RSA加密算法使用一对公钥和私钥来加密和解密数据,能够有效防止数据泄露;2. RSA加密算法支持多种填充模式,如NoPadding、PKCS1Padding等;3. RSA加密算法支持多种签名算法,如MD5withRSA、SHA1withRSA等;4. RSA加密算法的安全性非常高,能够有效防止数据泄露。
四、DES加密DES(数据加密标准)是一种对称加密算法,它使用56位的密钥来加密和解密数据。
DES 加密算法是一种传统的加密算法,它的安全性不如AES和RSA加密算法,但它的速度比AES和RSA加密算法快得多。
DES加密算法的特点主要有:1. DES加密算法使用56位的密钥来加密和解密数据,它的安全性不如AES和RSA加密算法;2. DES加密算法支持多种模式,如ECB、CBC等;3. DES加密算法支持多种填充模式,如NoPadding、PKCS5Padding等;4. DES加密算法的速度比AES和RSA加密算法快得多。
信息系统项目管理师重点考点总结归纳完整篇
![信息系统项目管理师重点考点总结归纳完整篇](https://img.taocdn.com/s3/m/2f757518551810a6f4248668.png)
信息系统项目管理师重点考点总结归纳1信息系统项目管理师重点考点知识点1:瀑布模型的特点①瀑布模型为软件的开发和维护提供了一种有效有管理模式,对保证软件产品的质量有重要的作用;②可根据这一模式制定出开发计划,进行成本预算,组织开发力量,以项目的阶段评审和文档控制为手段,有效地对整个开发过程进行指导;③在一定程度上消除非结构化软件、降低软件的复杂度、促进软件开发工程化方面起到显著作用;④瀑布模型缺乏灵活性、无法通过开发活动来澄清本来不够确切的需求,这将导致直到软件开发完成时发现所开发的软件并非是用户所需求的。
知识点2:信息安全有三类加密方式:对称加密算法、非对称加密算法和不可逆加密算法。
他们可以分别应用于数据加密、身份认证和数据安全传输。
l对称加密算法对称加密算法是应用较早的加密算法,技术成熟。
在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。
收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。
在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。
对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高.不足之处是,交易双方都使用同样钥匙,安全性得不到保证.此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担.对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。
在计算机专网系统中广泛使用的对称加密算法有DES、IDEA和AES。
传统的DES由于只有56位的密钥,因此已经不适应当今分布式网络对数据加密安全性的要求.2021年RSA数据安全发起了一项“DES挑战赛”的活动,志愿者四次分别用了四个月、41天、56个小时和22个小时了56位密钥DES算法加密的密文,证明了DES加密算法在计算机速度提升后的今天被认为是不安全的!!!(3DES是128位的)AES是联邦府采用的商业及府数据加密标准,预计将在未来几十年里代替DES 在**个领域中得到广泛应用.AES提供128位密钥,因此,128位AES的加密强度是56位DES加密强度的1021倍还多。
常见的加密解密算法
![常见的加密解密算法](https://img.taocdn.com/s3/m/5755456f26d3240c844769eae009581b6bd9bd7a.png)
常见的加密解密算法⽹络中传输敏感信息的时候通常会对字符串做加密解密处理1.Base64位加密(可加密解密)最简单的加密⽅式,没有密钥,这种⽅式只要让别⼈拿到你的密⽂,就可以直接解密,只能⽤来迷惑,⼀般情况下不单独使⽤,因为真的并没有什么卵⽤~可以和其他加密⽅式混合起来,作为⼀层外部包装。
import base64data = "abc"#加密m = Base64.encodestring(data)print m #得到⼀个base64的值#解密date = Base64.decodestring(m)2.MD5加密(加密不可逆)MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)。
128位长度。
⽬前MD5是⼀种不可逆算法。
具有很⾼的安全性。
它对应任何字符串都可以加密成⼀段唯⼀的固定长度的代码。
(⼩贴⼠:为啥MD5加密算法不可逆呢~ 按道理来说有加密⽅式,就会有解密⽅式呀?因为MD5加密是有种有损的加密⽅式,⽐如⼀段数据为'123',我在加密的时候,遇到1和3都直接当做是a,加密后变成了'a2a',所以解密的时候就出现了4种组合'323''121''123''321',数据⼀多,⾃然找不到原始的数据了,当然这种⽅式加密的密⽂也不需要解密,需要的时候直接发送原始密⽂就好了~只是看不到密⽂原本的内容)import hashlibimport base64data1 = "abc"data2 = 'def'hash = hashlib.md5()#多个⽂件多次加密hash.update(data1)hash.update(data2)value = hash.digest()print repr(value) #得到⼀个⼆进制的字符串print hash.hexdigest() #得到⼀个⼗六进制的字符串print base64.encodestring(value) #得到base64的值3.sha1加密(加密不可逆)SHA1的全称是Secure Hash Algorithm(安全哈希算法) 。
网络攻击与防护
![网络攻击与防护](https://img.taocdn.com/s3/m/e4f48dc532d4b14e852458fb770bf78a65293ac2.png)
《网络攻击与防御》网络攻击与防范措施随着互联网的发展,在计算机网络安全领域里,存在一些非法用户利用各种手段和系统的漏洞攻击计算机网络.网络安全已经成为人们日益关注的焦点问题网络中的安全漏洞无处不在,即便旧的安全漏洞补上了补丁,新的安全漏洞又将不断涌现.网络攻击是造成网络不安全的主要原因.单纯掌握攻击技术或者单纯掌握防御技术都不能适应网络安全技术的发展为了提高计算机网络的安全性,必须了解计算机网络的不安全因素和网络攻击的方法同时采取相应的防御措施。
关键字:特洛伊木马网络监听缓冲区溢出攻击特洛伊木马是一种恶意程序,它们悄悄地在宿主机器上运行,就在用户毫无察觉的情况下,让攻击者获得了远程访问和控制系统的权限.黑客的特洛伊木马程序事先已经以某种方式潜入你的机器,并在适当的时候激活,潜伏在后台监视系统的运行,它同一般程序一样,能实现任何软件的任何功能.例如拷贝、删除文件、格式化硬盘、甚至发电子邮件,典型的特洛伊木马是窃取别人在网络上的账号和口令,它有时在用户合法的登录前伪造一登录现场,提示用户输入账号和口令,然后将账号和口令保存至一个文件中,显示登录错误,退出特洛伊木马程序。
完整的木马程序一般由两个部份组成:一个是服务器程序,一个是控制器程序.“中了木马”就是指安装了木马的服务器程序,若你的电脑被安装了服务器程序,则拥有控制器程序的人就可以通过网络控制你的电脑、为所欲为。
1.1 特洛伊木马程序的检测(1)通过网络连接检测:扫描端口是检测木马的常用方法.在不打开任何网络软件的前提下,接入互联网的计算机打开的只有139端口.因此可以关闭所有的网络软件。
进行139端口的扫描。
(2)通过进程检测:Win/XP中按下“CTL+AL T+DEL”进入任务管理器,就可以看到系统正在运行的全部进程,清查可能发现的木马程序。
(3)通过软件检测:用户运行杀毒、防火墙软件和专用木马查杀软件等都可以检测系统中是否存在已知的木马程序。
数据安全
![数据安全](https://img.taocdn.com/s3/m/b9c26065f5335a8102d220f5.png)
数据安全有对立的两方面的含义:一是数据本身的安全,主要是指采用现代密码算法对数据进行主动保护,如数据保密、数据完整性、双向强身份认证等,二是数据防护的安全,主要是采用现代信息存储手段对数据进行主动防护,如通过磁盘阵列、数据备份、异地容灾等手段保证数据的安全,数据安全是一种主动的包含措施,数据本身的安全必须基于可靠的加密算法与安全体系,主要是有对称算法与公开密钥密码体系两种。
机密性(Confidentiality)保密性(secrecy),又称机密性,是指个人或团体的信息不为其他不应获得者获得。
在电脑中,许多软件包括邮件软件、网络浏览器等,都有保密性相关的设定,用以维护用户资讯的保密性,另外间谍档案或黑客有可能会造成保密性的问题。
完整性(Integrity)数据完整性是信息安全的三个基本要点之一,指在传输、存储信息或数据的过程中,确保信息或数据不被未授权的篡改或在篡改后能够被迅速发现。
在信息安全领域使用过程中,常常和保密性边界混淆。
以普通RSA对数值信息加密为例,黑客或恶意用户在没有获得密钥破解密文的情况下,可以通过对密文进行线性运算,相应改变数值信息的值。
例如交易金额为X元,通过对密文乘2,可以使交易金额成为2X。
也称为可延展性(malleably)。
为解决以上问题,通常使用数字签名或散列函数对密文进行保护。
数据安全VLAN一例可用性(Availability)数据可用性是一种以使用者为中心的设计概念,易用性设计的重点在于让产品的设计能够符合使用者的习惯与需求。
以互联网网站的设计为例,希望让使用者在浏览的过程中不会产生压力或感到挫折,并能让使用者在使用网站功能时,能用最少的努力发挥最大的效能。
威胁数据安全的因素有很多,主要有以下几个比较常见:(1)硬盘驱动器损坏一个硬盘驱动器的物理损坏意味着数据丢失。
设备的运行损耗、存储介质失效、运行环境以及人为的破坏等,都能造成硬盘驱动器设备造成影响。
(2)人为错误由于操作失误,使用者可能会误删除系统的重要文件,或者修改影响系统运行的参数,以及没有按照规定要求或操作不当导致的系统宕机(3)黑客这里入侵时入侵者通过网络远程入侵系统,侵入形式包括很多:系统漏洞,管理不力等(4)病毒由于感染计算机病毒而破坏计算机系统,造成的重大经济损失屡屡发生,计算机病毒的复制能力强,感染性强,特别是网络环境下,传播性更快。
国家三级(网络技术)笔试-试卷7
![国家三级(网络技术)笔试-试卷7](https://img.taocdn.com/s3/m/b8983e89770bf78a6429542b.png)
国家三级(网络技术)笔试-试卷7(总分:164.00,做题时间:90分钟)一、选择题(总题数:61,分数:122.00)1.选择题()下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。
(分数:2.00)__________________________________________________________________________________________ 解析:2.UNIX操作系统历尽沧桑而经久不衰,Solaris是UNIX举足轻重的成员。
该产品是属于( )公司的。
(分数:2.00)A.IBMB.Sun √C.SCOD.HP解析:解析:Solaris是Sun公司的UNIX系统,它是在Sun公司自己的SunOS的基础上进一步设计开发而成的。
3.( )是Windows 2000 Server最重要的新功能。
(分数:2.00)A.使用域作为基本管理单位B.使用主域控制器C.兼容性提高D.活动目录服务√解析:解析:活动目录服务是Windows 2000 Serverr最重要的新功能之一,它将域又详细化分成组织单元,方便了网络对象的查找,加强了网络的安全性。
此外,因为采用了活动目录服务,Windows 2000 Serverr 不再区分主域控制器与备份域控制器。
4.下图所示的网络中,路由器R2“路由表”中到达网络200.0.0.0表项的下一路由器地址应该是( )(分数:2.00)A.300.0.0.5 √B.300.0.0.6C.400.0.0.5D.直接投递解析:解析:如图,路由器R2两侧是网络300.0.0.0和网络400.0.0.0,如果R2收到一个IP数据报,其IP地址的网络号是300.0.0.0或400.0.0.0,那么R2就可以直接将该报文传送给目的主机。
但这里IP地址的网络号是200.0.0.0,那么R2就必须将该报文传送给其直接相连的另一个路由器(左侧的一个300.0.0.5),再由这个路由器进行传递。
常见三种加密(MD5、非对称加密,对称加密)
![常见三种加密(MD5、非对称加密,对称加密)](https://img.taocdn.com/s3/m/535dcac377a20029bd64783e0912a21614797fbc.png)
常见三种加密(MD5、⾮对称加密,对称加密)任何应⽤的开发中安全都是重中之重,在信息交互异常活跃的现在,信息加密技术显得尤为重要。
在app应⽤开发中,我们需要对应⽤中的多项数据进⾏加密处理,从⽽来保证应⽤上线后的安全性,给⽤户⼀个安全保障。
本节只讲原理和应⽤,具体的代码请到,都是封装好的⼯具类,包括终端命令操作。
下⾯介绍常⽤三种加密。
⼀、哈希HASH1.MD5加密MD5加密的特点:1. 不可逆运算2. 对不同的数据加密的结果是定长的32位字符(不管⽂件多⼤都⼀样)3. 对相同的数据加密,得到的结果是⼀样的(也就是复制)。
4. 抗修改性 : 信息“指纹”,对原数据进⾏任何改动,哪怕只修改⼀个字节,所得到的 MD5 值都有很⼤区别.5. 弱抗碰撞 : 已知原数据和其 MD5 值,想找到⼀个具有相同 MD5 值的数据(即伪造数据)是⾮常困难的.6. 强抗碰撞: 想找到两个不同数据,使他们具有相同的 MD5 值,是⾮常困难的MD5 应⽤:⼀致性验证:MD5将整个⽂件当做⼀个⼤⽂本信息,通过不可逆的字符串变换算法,产⽣⼀个唯⼀的MD5信息摘要,就像每个⼈都有⾃⼰独⼀⽆⼆的指纹,MD5对任何⽂件产⽣⼀个独⼀⽆⼆的数字指纹。
那么问题来了,你觉得这个MD5加密安全吗?其实是不安全的,不信的话可以到这个⽹站试试:。
可以说嗖地⼀下就破解了你的MD5加密2.加“盐”可以加个“盐”试试,“盐”就是⼀串⽐较复杂的字符串。
加盐的⽬的是加强加密的复杂度,这么破解起来就更加⿇烦,当然这个“盐”越长越复杂,加密后破解起来就越⿇烦,不信加盐后然后MD5加密,再去到破解试试看,他就没辙了哈哈,这下应该安全了吧!答案是否定的。
如果这个“盐”泄漏出去了,不还是完犊⼦吗。
同学会问,“盐”怎么能泄漏出去呢?其实是会泄漏出去的。
⽐如苹果端、安卓端、前端、后台等等那些个技术⼈员不都知道吗。
都有可能泄漏出去。
⼜有同学说那就放在服务器吧,放在服务器更加不安全,直接抓包就抓到了加固定的“盐”还是有太多不安全的因素,可以看出没有百分百的安全,只能达到相对安全(破解成本 > 破解利润),所以⼀些⾦融的app、⽹站等加密⽐较⾼。
常见的加密算法
![常见的加密算法](https://img.taocdn.com/s3/m/d00af095b8d528ea81c758f5f61fb7360b4c2b03.png)
常见的加密算法常⽤的加密算法有哪些背景为了防⽌⾃⼰的信息完全裸露在别⼈⾯前,就需要对信息进⾏加密。
加密就是把明⽂以某种⽅式变换成⼀堆看起来乱七⼋糟的数据--密⽂,再把密⽂发给对⽅,对⽅收到之后,⽤对应的⽅法再⽤相应的⽅法再数据还原成明⽂(解密)。
对信息进⾏加密的步骤就是加密算法。
有些算法本⾝,除了要输⼊明⽂之外,还需要输⼊另⼀个专门的数据(密钥)才能输出密⽂。
现代的加密系统,⼀般都由加密算法和密钥组成。
没有密钥的加密系统也是有的,但保密性和实⽤性相对来说⽐较差。
⽐如⼀旦组织中有⼈离开,那么所有⼈都要更换加密算法,否则安全性就⽆法保证了。
⽽带密钥的加密系统解决了这个问题。
因为即使算法公开,没有密钥也⽆法解密密⽂信息,⽽密钥的更换⽐算法的更换要容易得多。
使⽤密码学可以达到以下⽬的:保密性:防⽌⽤户的标识或数据被读取。
数据完整性:防⽌数据被更改。
⾝份验证:确保数据发⾃特定的⼀⽅。
常见的加密算法分类:分类⽅法⼀:按照加密算法密钥是否对称,分成三类:对称加密算法,⾮对称加密算法和Hash算法。
分类⽅法⼆:按照加密后的信息是否可以被还原,常⽤的加密算法分为两⼤类:可逆加密算法和不可逆加密算法。
可逆加密算法:可逆加密算法⼜分为两⼤类:“对称式”和“⾮对称式”。
可逆加密算法对称式加密 加密和解密使⽤同⼀个密钥,通常称之为“Session Key ”。
这种加密技术⽬前被⼴泛采⽤,如美国政府所采⽤的DES加密标准就是⼀种典型的“对称式”加密法,它的Session Key长度为56Bits。
⾮对称式加密 加密和解密所使⽤的不是同⼀个密钥,⽽是两个密钥:⼀个称为“公钥”,另⼀个称为“私钥”;它们两个必须配对使⽤,否则不能打开加密⽂件。
这⾥的“公钥”是指可以对外公布的,“私钥”则只能由持有⼈本⼈知道。
它的优越性就在这⾥,因为如果是在⽹络上传输加密⽂件,对称式的加密⽅法就很难把密钥告诉对⽅,不管⽤什么⽅法都有可能被别⼈窃听到。
不可逆加密算法
![不可逆加密算法](https://img.taocdn.com/s3/m/fd2c18e6f80f76c66137ee06eff9aef8951e485f.png)
不可逆加密算法不可逆加密算法2010-04-06 13:35不可逆加密算法的特征是加密过程中不需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据是无法被解密的,只有重新输入明文,并再次经过同样不可逆的加密算法处理,得到相同的加密密文并被系统重新识别后,才能真正解密。
显然,在这类加密过程中,加密是自己,解密还得是自己,而所谓解密,实际上就是重新加一次密,所应用的"密码"也就是输入的明文。
不可逆加密算法不存在密钥保管和分发问题,非常适合在分布式网络系统上使用,但因加密计算复杂,工作量相当繁重,通常只在数据量有限的情形下使用,如广泛应用在计算机系统中的口令加密,利用的就是不可逆加密算法。
近年来,随着计算机系统性能的不断提高,不可逆加密的应用领域正在逐渐增大。
在计算机网络中应用较多不可逆加密算法的有RSA公司发明的MD5算法和由美国国家标准局建议的不可逆加密标准SHS(Secure Hash Standard:安全杂乱信息标准)等。
MD5算法:MD5的全称是Message-Digest Algorithm 5,它是基于Hash变换而来的,MD5将任意长度的"字节串"变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
md5是怎样进行加密的:这个要分步来讲为了更好的明白我们来举个例子来讲如对一个字符串"string"进行加密第一步我们要把他转换成位(MD5是对位进行操作)假如你连什么叫位也不懂那下面就不用看了老大讲是简明易懂不还是天书嘛现在ME们假设string转换为位后是1010000101110101当然肯定不是ME在这里只是把他当作是因为ME可没功夫再把这个字符串一个个的转成位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)。