PHP中的MD5加密                
                
                    所属分类:
                        网络安全 / 加密解密                    
                    阅读数:
                        113
                    
                        收藏 0赞 0分享
                    
                 
                
                    综述:密码学是研究编制密码(我们简称为加密:encode)和破译密码(我们称之为解密:decode)的技术科学。研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称密码学。通常情况下,人们将可懂的文本称为明文;将明文变换成的不可懂的文本称为密文。把明文变换成密文的过程叫加密;其逆过程,即把密文变换成明文的过程叫解密。 
??PHP中提供了哪些数据加密功能? 
??PHP提供了crypt()函数完成加密功能: 
????string crypt (string input_string [, string salt])  
??这一函数完成被称作单向加密的功能,也就是说,它可以加密一些明码,但不能够将密码转换为原来的明码。单向加密的口令一旦落入第三方人的手里,由于不能被还原为明文,因此也没有什么大用处。在验证用户输入的口令时,用户的输入采用的也是单向算法,如果输入与存储的经加密后的口令相匹配,则输入的口令一定是正确的。 
??这个函数的input_string参数是需要加密的字符串,第二个参数salt是一个位字串,它能够影响加密的暗码,进一步地排除被称作预计算攻击的可能性。缺省情况下,PHP使用一个2个字符的DES干扰串,如果你的系统使用的是MD5 ,它会使用一个12个字符的干扰串。我们可以通过执行下面的命令发现系统将要使用的干扰串的长度: 
????print "系统使用的干扰串的长度是:". CRYPT_SALT_LENGTH; 
??crypt()支持四种算法,下面是它支持的算法和相应的salt参数的长度: 
[注:以下用表格] 
算法 Salt长度 
CRYPT_STD_DES 2-character (默认) 
CRYPT_EXT_DES 9-character  
CRYPT_MD5 12-character beginning with $1$  
CRYPT_BLOWFISH 16-character beginning with $2$ 
??怎样将PHP的数据加密功能应用于用户验证? 
??我们用crypt()实现用户身份验证。比如我们用一段PHP程序限制对一个目录的访问,只允许注册用户访问这一目录。我们把资料存储MySQL数据库的一个表(这个数据表名为members)中: 
????mysql>CREATE TABLE members ( 
????->username CHAR(14) NOT NULL, 
????->password CHAR(32) NOT NULL, 
????->PRIMARY KEY(username) 
????->);  
??然后,我们可以输入用户的数据到该表中: 
用户名 密码 
Tom keloD1C377lKE 
John ba1T7vnz9AWgk 
Bill paLUvRWsRLZ4U 
??这些加密的口令对应的明码分别是Tom、John和Bill。我们将根据口令的前二个字母创建干扰串: 
????$enteredPassword. 
????$salt = substr($enteredPassword, 0, 2); 
????$userPswd = crypt($enteredPassword, $salt);  
????// $userPswd然后就和用户名一起存储在MySQL 中 
??crypt()和Apache的口令-应答验证系统的应用 
????<?php 
????$host = "localhost"; //主机
????$username = "Tom"; //用户名
????$passwd = "Hello world"; //密码
????$db = "users"; //数据库名 
????// 设置是否通过验证标志,默认为否
????$authorization = 0; 
????// 提示用户输入帐号和密码 
????if (isset($PHP_AUTH_USER) && isset($PHP_AUTH_PW)){
??????mysql_pconnect($host, $username, $passwd) or die("不能连接到MySQL服务器!"); 
??????mysql_select_db($db) or die("不能选择数据库!"); 
??????// 进行加密
??????$salt = substr($PHP_AUTH_PW, 0, 2); 
??????$encrypted_pswd = crypt($PHP_AUTH_PW, $salt); 
??????//SQL查询语句
??????$query = "SELECT username FROM members WHERE username = \'$PHP_AUTH_USER\' AND password = \'$encrypted_pswd\'"; 
??????// 执行查询
??????if (mysql_numrows(mysql_query($query)) == 1) {
????????$authorization = 1; 
??????}
????} 
????if (! $authorization){
??????header(\'WWW-Authenticate: Basic realm="用户验证"\'); 
??????header(\'HTTP/1.0 401 Unauthorized\'); 
??????print "无法通过验证"; 
??????exit; 
????}else {
??????print "已经加密"; 
????}
?????>  
??在缺省状态下使用的 crypt()并不是最安全的,所以如果需要较高的安全性能,就需要其他更好的算法,比如md5(),这一函数使用MD5散列算法。 
??如何通过MD5方式进行加密? 
??PHP中通过MD5方式加密的函数有md5(),它的一个作用是混编。 
??一个混编函数可以将一个可变长度的信息变换为具有固定长度被混编过的输出,也被称作"信息文摘",这是十分有用的,因为 一个固定长度的字符串可以用来检查文件的完整性和验证数字签名与用户身份。PHP内置的md5()混编函数将把一个可变长度的信息转换为128位(32个字符)的信息文摘。混编的一个有趣的特点是:不能通过分析混编后的信息得到原来的明码,因为混编后的结果 与原来的明码内容没有依赖关系。即便只改变一个字符串中的一个字符,也将使得MD5混编算法计算出二个截然不同的结果。我们首先来看下表的内容及其相应的结果: 
??使用md5()混编字符串 
????<php 
????$input = "Hello,PHP world!"; 
????$output = md5($input); 
????print "输出: $output "; 
?????>  
??结果: 
????输出: 7996b5e0804042fd531907a4900f190e 
??注意,结果的长度为32个字符。我们把$input的值稍微改变一下: 
??使用md5()对一个稍微变化的字符串进行混编 
????<?php 
????$input = "Hello,PHP World!"; 
????$output = md5($input); 
????print "输出: $output "; 
?????>  
??结果: 
????hash2: f0456d48ed06a5c35b1e42561fa7a016 
??可以发现,尽管二个结果的长度都是32个字符,但明文中一点微小的变化使得结果发生了很大的变化,我们可以利用这个特点来检查数据中微小变化。
                                    
             
            
                
                Getright 5 手动脱壳和重建IAT--第二部分(图)
在本参考教程的第一部分我们学习了如何正确地转储(dump)Getright 5. 现在我们将要去找神奇跳转,这样IAT会被正确地转储下来,而不用手工修复了. 要完成这一点,我们需要打败程序中的一些陷阱, 并使它们即使在检测到被执行脱壳时也无所作为. 
让我们开始吧! 
第
                    
                    收藏 0赞 0分享
Getright 5 手动脱壳和重建IAT--第一部分(图)
这是一篇Armadillo加壳软件Getright 5.01的脱壳译文,我是参照Ricardo Narvaja的“Getright 5 脱壳和重建IAT”的文章以及Bighead[DFCG][YCG]的译文,一边实践一边再次翻译的。感谢Ricardo Narvaja和Bighea
                    
                    收藏 0赞 0分享
黑客破解Email账号最常用的三种方法
电子邮件并不是安全的,在邮件的发送、传送和接收整个过程中的每个环节都可能存在薄弱环节,恶意用户如果利用其漏洞,就能够轻易的破解出账号,获得邮件内容。
一、利用邮件服务器操作系统的漏洞
邮件服务器软件是运行在特定的操作系统上的,如Linux、Windows NT/20
                    
                    收藏 0赞 0分享
黑客技术之slv unpackme 脱壳
其实壳本身不要紧,问题是vm里面有个校验。
sm同学手下留情,我勉强能搞一个运行正常的,没精力还原vm了。
在virutalfree的retn上f4, 直到[esp]是一个exe image内的地址f7返回:
0040FA91    B8 BE180000     m
                    
                    收藏 0赞 0分享
Allok Video to 3GP Converter 脱壳+破解(图)
①。
下载好安装后,用DIT查看为MoleBox 2.5.x.
-----------------------------------------------------------------------------
OD,载如RUN,程序完全运行后,ALT+M查看内存映
                    
                    收藏 0赞 0分享
有密码 优酷视频 破解方法
优酷网站的视频可以设置独立的播放密码,不过你可知道:观看有密码的优酷视频其实不需要密码哦。下面讲述两种方法进行优酷视频密码破解的方法。 
优酷视频密码破解一: 
打开FLV解析网站,这里推荐使用该站点:http://www.flvcd.com,从浏览器地址栏复制需要解密的优酷
                    
                    收藏 0赞 0分享
                 查看更多