可以破解,有md5解密的网站,但一般都是用暴力破解。
MD5是什么?
Message
Digest
Algorithm
MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC
1321(R.Rivest,MIT
Laboratory
for
Computer
Science
and
RSA
Data
Security
Inc.
April
1992)MD5最广泛被用于各种软件的密码认证和钥匙识别上。通俗的讲就是人们讲的序列号。
常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于可以在下载该软件后,对下载回来的文件用专门的软件(如Windows
MD5
Check等)做一次MD5校验,以确保获得的文件与该站点提供的文件为同一文件。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛
数据库、系统文件安全等方面。
普通MD5密文的破解
随着那些在线MD5密文破解网站的兴起,一些常用
的MD5密码都能在1秒钟之内破解。即使是一些较为复杂的,也能够通过破解网站的后台破解系统进行挂机破解。因此,MD5加密已经不存在神秘感,破解亦易
如反掌。
破解简单MD5码
假设我们的密码为admin,那么经过MD5加密得到密文为:7a57a5a743894a0e(16位)、21232f297a57a5a743894a0e4a801fc3(32位)。用在线破解网站来破解下密码原文,打开某MD5在线破解网站,
将16位或者32位密文填入到文本框中,点击“解密”按钮,不到一秒钟密码原文就出来了。
一、简单说明
1.说明
在开发应用的时候,数据的安全性至关重要,而仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题。
如:可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据
“青花瓷”软件
因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交
2.常见的加密算法
MD5 SHA DES 3DES RC2和RC4 RSA IDEA DSA AES
3.加密算法的选择
一般公司都会有一套自己的加密方案,按照公司接口文档的规定去加密
二、MD5
1.简单说明
MD5:全称是Message Digest Algorithm 5,译为“消息摘要算法第5版”
效果:对输入信息生成唯一的.128位散列值(32个字符)
2.MD5的特点
(1)输入两个不同的明文不会得到相同的输出值
(2)根据输出值,不能得到原始的明文,即其过程不可逆
3.MD5的应用
由于MD5加密算法具有较好的安全性,而且免费,因此该加密算法被广泛使用
主要运用在数字签名、文件完整性验证以及口令加密等方面
4.MD5破解
MD5解密网站:
5.MD5改进
现在的MD5已不再是绝对安全,对此,可以对MD5稍作改进,以增加解密的难度
加盐(Salt):在明文的固定位置插入随机串,然后再进行MD5
先加密,后乱序:先对明文进行MD5,然后对加密得到的MD5串的字符进行乱序
总之宗旨就是:黑客就算攻破了数据库,也无法解密出正确的明文
代码示例:
复制代码 代码如下:
#import "HMViewController.h"
#import "NSString+Hash.h"
#define Salt @"fsdhjkfhjksdhjkfjhkd546783765"
@interface HMViewController ()
@end
@implementation HMViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self digest:@"123"]; //
[self digest:@"abc"];
[self digest:@"456"];
}
/**
* 直接用MD5加密
*/
- (NSString *)digest:(NSString *)str
{
NSString *anwen = [str md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
/**
* 加盐
*/
- (NSString *)digest2:(NSString *)str
{
str = [str stringByAppendingString:Salt];
NSString *anwen = [str md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
/**
* 多次MD5
*/
- (NSString *)digest3:(NSString *)str
{
NSString *anwen = [str md5String];
anwen = [anwen md5String];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
/**
* 先加密, 后乱序
*/
- (NSString *)digest4:(NSString *)str
{
NSString *anwen = [str md5String];
// 注册: 123 ---- 2CB962AC59075B964B07152D234B7020
// 登录: 123 --- 202CB962AC59075B964B07152D234B70
NSString *header = [anwen substringToIndex:2];
NSString *footer = [anwen substringFromIndex:2];
anwen = [footer stringByAppendingString:header];
NSLog(@"%@ - %@", str, anwen);
return anwen;
}
@end
(1)直接使用MD5加密(去MD5解密网站即可破解)
(2)使用加盐(通过MD5解密之后,很容易发现规律)
(3)多次MD5加密(使用MD5解密之后,发现还是密文,那就接着MD5解密)
(4)先加密,后乱序(破解难度增加)
三、注册和验证的数据处理过程
1.提交隐私数据的安全过程 – 注册
2.提交隐私数据的安全过程 – 登录
MD5不可逆 加密后不可解密!
很多网站能解密其实不应该说是解密。应该叫撞库。
网站数据库应该是计算了或者存储了大量的文本加密后的MD5值
当用户输入MD5值以后,网站会去数据库找MD5值对应的源文本。这个原理~
但MD5终究是不可逆的,一些大型的数据文本他是解密不了滴,所以网站会提示解密失败、
一些简单的英文数字标点组合能还是可以的
md5的解密方法
!--#include file="inc/md5.asp"--(md5的加密文件)
!--#include file="conn.asp"-- (数据库的连接文件)
%
if request.form("MM_insert") then
if request.form("action")="modpass" then
conn.execute("update [admin] set admin_name=''"MD5(Request("adminname"))"''")
conn.execute("update [admin] set admin_password=''"MD5(Request("adminpwd"))"''")
Response.Write("script language=javascriptalert(''管理员资料设定成功!请删除该文件'');this.top.location.href=''setup.asp'';/script")
end if
end if%
HTMLHEAD
META http-equiv=Content-Type content="text/html; charset=gb2312"
LINK href="inc/admin.css" type=text/css rel=stylesheet
META content="MSHTML 6.00.2800.1126" name=GENERATOR
/headbody
table width="98%" align="center" border="1" cellspacing="0" cellpadding="4" class=lanyubk style="border-collapse: collapse"
form name="form1" method="post" action="setup.asp"
tr
td class=lanyuss align="center"管理员设定程序/td
/tr
tr class=lanyuds
td管理员名称:input type="text" name="adminname" size="30"
/td
/tr
tr class=lanyuds
td管理员密码:input type="text" name="adminpwd" size="30"
/td
/tr
tr class=lanyuqs
td align="center"
input type="submit" name="Submit" value="确定提交"
input type="reset" name="Reset" value="清空重写"
/td
/tr
input type="hidden" name="action" value="modpass"
input type="hidden" name="MM_insert" value="true"
/form
/tablebr
table width="98%" align="center" border="1" cellspacing="0" cellpadding="4" class=lanyubk style="border-collapse: collapse"
form name="form1" method="post" action="setup.asp"
/table
这两行是表名(admin_name=''"MD5(Request("adminname"))"''")像这样
conn.execute("update [admin] set admin_name=''"MD5(Request("adminname"))"''")
conn.execute("update [admin] set admin_password=''"MD5(Request("adminpwd"))"''")
喜欢的话就赶紧采纳~~!