年由MITLaboratoryforComputerScience(IT计算机科学实验室)和RSADataSecurityInc(RSA数据安全公司)的RonaldL.Rivest教授开发出来,经由MD2、MD3和MD4发展而来。
MD5算法的使用不需要支付任何版权费用。
它的作用是让大容量信息在用数字签名软件签私人密匙前被”压缩”成一种保密的格式(将一个任意长度的“字节串”通过一个不可逆的字符串变换算法变换成一个128bit的大整数,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
)其典型应用是对一段Message(字节串)产生Fingerprint(指纹),以防止被篡改。
比如,在UNⅨ下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构为:MD5(httpd-2.2.0.tar.bz2)=402b90a2e47205f94b3bld91ela8c459,这就是httpd.2.2.0.tar.bz2文件的数字签名。
MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。
如果在以后传播这个文件的过程中,无论文件的内容发生了任何形式的改变(包括人为修改,如Repack进木马病毒,或者下载过程中线路不稳定引起的传输错误等),只要你对这个文件重新计算MD5时就会发现信息摘要不相同,由此可以确定你得到的只是一个不正确的文件。
MD5还广泛用于加密和解密技术上。
例如在UNIX系统中用户的密码就是以MD5或其它类似算法经加密后存储在文件系统中。
当用户登录时,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。
通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。
这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。
MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
(2)项目中的加密应用加密分为两部分:一是利用MD5算法把用户名和密码转化成32位MD5码,并对应存入数据库使界面显示的是MD5码,保护登陆信息的安全。
即使是管理者,也不能例外。
二是对用户登陆密码进行暗号化处理保存到数据库中。
如:牙科医院诊疗预约系统存入数据库,INSERTINTOuser(password)VALUES(AES_ENCRYPT(’hell0123’,’sri.)):其中hell0123是密码,嘶是暗号。
AES取出,SELECTAES—DECRYPT(password,’sri’)FROMadmin。
2.6数据库(1)SQL语言SQL是英文StructuredQueryLanguage的缩写,意思为结构化查询语言。
SQL语言的主要功能就是同各种数据库建立联系,进行沟通。
按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。
SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。
目前,绝大多数流行的关系型数据库管理系统,如Oracle、Sybase、MicrosoftSQLServer、Access等都采用了SQL语言标准。
虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select、Insert、Update、Delete、Create以及Drop在内的标准的SOL命令仍然可以被用来完成几乎所有的数据库操作。
在众多的SQL命令中,select语句应该算是使用最频繁的。
select语句主要被用来对数据库进行查询并返回符合用户查询标准的结果数据。
select语句中位于select关键词之后的列名用来决定哪些列将作为查询结果返回。
用户.