求简单的md5解密函数(md5解密函数)

2023-03-16 6:12:42 密码用途 思思

介绍MD5加密算法基本情况MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。

Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了"字节串"而不是"字符串"这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。

MD5将任意长度的"字节串"变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。

MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被"篡改"。举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的"抵赖",这就是所谓的数字签名应用。

MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不"知道"用户的密码是什么。

一些黑客破获这种密码的方法是一种被称为"跑字典"的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。

即使假设密码的最大长度为8,同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P(62,2)....+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘组,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。

在很多电子商务和社区应用中,管理用户的Account是一种最常用的基本功能,尽管很多Application Server提供了这些基本组件,但很多应用开发者为了管理的更大的灵活性还是喜欢采用关系数据库来管理用户,懒惰的做法是用户的密码往往使用明文或简单的变换后直接保存在数据库中,因此这些用户的密码对软件开发者或系统管理员来说可以说毫无保密可言,本文的目的是介绍MD5的Java Bean的实现,同时给出用MD5来处理用户的Account密码的例子,这种方法使得管理员和程序设计者都无法看到用户的密码,尽管他们可以初始化它们。但重要的一点是对于用户密码设置习惯的保护

Oracle定义DES加密解密及MD5加密函数示例

(1)DES加密函数

create

or

replace

function

encrypt_des(p_text

varchar2,

p_key

varchar2)

return

varchar2

is

v_text

varchar2(4000);

v_enc

varchar2(4000);

raw_input

RAW(128)

;

key_input

RAW(128)

;

decrypted_raw

RAW(2048);

begin

v_text

:=

rpad(

p_text,

(trunc(length(p_text)/8)+1)*8,

chr(0));

raw_input

:=

UTL_RAW.CAST_TO_RAW(v_text);

key_input

:=

UTL_RAW.CAST_TO_RAW(p_key);

dbms_obfuscation_toolkit.DESEncrypt(input

=

raw_input,key

=

key_input,encrypted_data

=decrypted_raw);

v_enc

:=

rawtohex(decrypted_raw);

dbms_output.put_line(v_enc);

return

v_enc;

end;

(2)DES解密函数

create

or

replace

function

decrypt_des(p_text

varchar2,p_key

varchar2)

return

varchar2

is

v_text

varchar2(2000);

begin

dbms_obfuscation_toolkit.DESDECRYPT(input_string

=

UTL_RAW.CAST_TO_varchar2(p_text),key_string

=p_key,

decrypted_string=

v_text);

v_text

:=

rtrim(v_text,chr(0));

dbms_output.put_line(v_text);

return

v_text;

end;

(3)MD5加密函数

CREATE

OR

REPLACE

FUNCTION

MD5(passwd

IN

VARCHAR2)

RETURN

VARCHAR2

IS

retval

varchar2(32);

BEGIN

retval

:=

utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING

=

passwd))

;

RETURN

retval;

END;

(4)函数使用示例

DES加密:

update

tb_salarysign_staff

s

set

s.staffpwd

=encrypt_des(s.staffpwd,

'test#5124*!de');

DES解密:select

decrypt_des(s.staffpwd,

'test#5124*!de')

from

tb_salarysign_staff

s

MD5加密:

update

tb_salarysign_staff

s

set

s.staffpwd

=

md5(s.staffpwd);

如何在Linux下用C语言实现MD5/DES解密

相关库函数如下:

#include openssl/md5.h

unsigned char *MD5(const unsigned char *d, unsigned long n,unsigned char *md);

int MD5_Init(MD5_CTX *c);

int MD5_Update(MD5_CTX *c, const void *data,unsigned long len);

int MD5_Final(unsigned char *md, MD5_CTX *c);

c# MD5类 解密

所谓MD5,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2、MD3、MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上个世纪90年代初开发出来的。MD5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前"压缩"成一种保密的格式,关键之处在于——这种"压缩"是不可逆的。

所以你的要求我无能无力了,MD5加密的后本来就不设定解密的,这是个单向的算法

在线MD5解密

d5密文破解(解密)可以说是网络攻击中的一个必不可少的环节,是黑客工具中的一个重要“辅助工具”。md5解密主要用于网络攻击,在对网站等进行入侵过程,有可能获得管理员或者其他用户的账号和密码值(md5加密后的值)。获得的密码值有两种情况,一种是明文,另外一种就是对明文进行了加密。如果密码值是加密的,这个时候就需要对密码值进行判断,如果是采取md5加密,则可以通过MD5Crack3等软件进行破解。王小云教授的md5密码碰撞破解算法没有公布,因此目前Md5解密方式主要采取暴力破解,

即软件通过算法生成字典,然后使用md5函数加密该字典中的值形成密文,接着跟需要破解的密文进行比较,如果相同则认为破解成功。目前网上有很多网站提供md5加密或者加密值查询,将加密后的md5值,输入到网站中,如果网站数据库中存在该md5,则该值对应的md5加密前的值就为密码。本案例介绍如何使用MD5Crack3以及一些在线的网站来进行破解;MD5Crack3是阿呆写的一款md5密码破解软件,其网站地址:,目前已经发布了MD5Crack4.0版本,也可以到我的blog()去下载。

(一)在线生成md5密码值

1.有关md5加解密知识

Md5密文破解(解密)可以说是网络攻击中的一个必不可少的环节,是黑客工具中的一个重要“辅助工具”。md5解密主要用于网络攻击,在对网站等进行入侵过程,有可能获得管理员或者其他用户的账号和密码值(md5加密后的值)。获得的密码值有两种情况,一种是明文,另外一种就是对明文进行了加密。如果密码值是加密的,这个时候就需要对密码值进行判断,如果是采取md5加密,则可以通过MD5Crack4等软件进行破解。王小云教授的md5密码碰撞破解算法没有公布,因此目前Md5解密方式主要采取暴力破解,

即软件通过算法生成字典,然后使用md5函数加密该字典中的值形成密文,接着跟需要破解的密文进行比较,如果相同则认为破解成功。目前网上有很多网站提供md5加密或者加密值查询,将加密后的md5值,输入到网站中,如果网站数据库中存在该md5,则该值对应的md5加密前的值就为密码。

2.通过cmd5网站生成md5密码

在浏览器中输入地址“”,在输入框中输入想要加密的原始密码,然后单击“md5加密或解密”按钮即可,如图1所示,原始密码为“goodman88”,加密后的密码值为:

MD5(goodman88,32)

=

d5a8e0b115259023faa219f5b53ca522

MD5(goodman88,16)

=

15259023faa219f5

 

图1

md5加密

作为实验数据,我们在生成一组生日的md5密码如下:

MD5(19801230,32)

=

2540bb62336a8eb3ebc1e42ee44c8e3d

MD5(19801230,16)

=

336a8eb3ebc1e42e

(二)在线破解md5密码值

1.通过cmd5网站破解md5密码

在cmd5网站的输入框中输入刚才加密后的md5

32值“d5a8e0b115259023faa219f5b53ca522”,然后单击“md5加密或解密”按钮即可,如图2所示,未能成功破解。

 

图2

通过cmd5网站未能破解md5密码

将第二个生日加密后的md5值“2540bb62336a8eb3ebc1e42ee44c8e3d”,放入cmd5网站进行破解,很快其结果就出来了,如图3所示。

 

图3

破解简单的数字密码

2.在线md5破解网站收费破解高难度的md5密码值

一些在线网站提供的md5密码破解只能破解已经收录和一些简单的密码,对于稍微复杂一点的密码,都不容易被破解;而且对一些稍微有点难度的md5密码值,如果数据库中有,在线网站是要求付费的,例如用一个复杂一点的md5值进行破解,如图4所示,提示找到,但是要求进行付费。

 

图4要求付费才能查看md5密码值

(三)使用字典暴力破解md5密码值

1.再次生成md5密码值

再在cmd5网站生成原密码为“jimmychu246”的md5密码值为:

MD5(jimmychu246,32)

=

437f4fffb6b2e5aaca9fd1712b8ad282

MD5(jimmychu246,16)

=

b6b2e5aaca9fd171

直接运行md5crack4,运行界面如图5所示。

 

图5

md5crack4程序主界面

2.在md5crack4中验证md5值

将需要破解的md5值(437f4fffb6b2e5aaca9fd1712b8ad282)粘贴到“破解单个密文(Single

Cryptograph)”输入框中,如图6所示,如果该md5值是正确的,则会在“破解单个密文”输入框下方显示黑色的“有效(valid)”两个字,否则显示“valid”为灰色。

 

3.使用字典进行破解

在“字符设置(Plaintext

Setting)”中选择“字典(Dictionary)”,并在“N0.1”、“N0.2”以及“N0.3”中选择三个不同的字典,选择完毕后,单击“Start”按钮开始md5破解,破解结束后会给出相应的提示,如图7所示,在本案例中使用字典破解成功,在Result中显示破解的密码为“jimmychu246”。

 

图7使用字典进行破解

4.“使用字符集(Char

Muster)”中的数字进行破解

将上面生成的数字md5值“336a8eb3ebc1e42e”放入单一md5密码破解输入框中,选中“Char

Muster”后,依次可以选择“Number”、“lowercase”、“majuscule”、“special

char”以及“custom”进行破解,在本例中使用数字进行破击,因此

“最小长度(Min

Length)”中设置为“1”,“最大长度(Max

Length)”中设置为“8”,然后单击“开始”按钮,使用数字进行md5破解,尝试破解密码位数从1~9999999之间的所有数字组合,如图8所示,其密码值破解成功,破解结果为“336a8eb3ebc1e42e

---

[19801230]”。

 

图8

使用数字进行破解

说明

(1)在md5crack4中还可以定义数字、大小字母、特殊字符的组合来进行破解。

(2)如果计算机配置比较好,可以设置更多线程。

(3)如果自定义进行破解,建议先选择使用数字,然后依次是数字、大小字母、特殊字符的组合。破解时先易后难,否则破解时间太长。

(4)在md5crack4还可以“使用插件”进行破解。

(5)在md5crack4中还可以设置软件显示的语言版本,一共有中文简体和英语两个版本,单击主界面中的设置(Option),即可进行设置,如图9所示。

 

图9

设置md5crack4

5.一次破解多个密码

将需要破解的md5密码全部存放到一个txt文件中,每一个密码独立一行,然后在md5crack4中单击“破解多个密文”,选择刚才编辑的md5密码文件,如图10所示,选择一种破解方式,在本案例中选择使用数字字典进行破解,最后单击“开始”按钮开始破解。

 

图10

破解多个md5密码值

在md5crack4右下方会显示破解结果,单击“日志”可以查看md5值校验等日志信息,单击“结果”可以查看破解的结果,如图11所示,在结果中会将md5值与原始密码进行一一对应。

 

图11

破解结果

Md5加解密是网络攻防中必须掌握的知识,本文介绍了使用md5cracker以及通过网站来对md5值进行破解,对md5破解,可以先在一些md5破解网站进行破解,如果未能破解,则可以在本地通过md5cracker进行破解。

ps:转载至安天365