看到博客有人问,其实这是个很简单、很基础的东西,但仍有很多人根本不知道,这里简单讲一下……

1、举个例子,你某日干某事(你懂的)看到一串密文:SI/crom508IRZV5829iGpg==

2、这段密文明显是Base64编码格式,经过解码后,SI/crom508IRZV5829iGpg== 等于 Base64(一串二进制数据)

3、这串二进制数据是明文密码经过加密后的密匙,由于二进制数据为不可显示字符串,所以一般程序员都将它编码成base64字符串,使之成为可显示字符串(也就是:SI/crom508IRZV5829iGpg==),方便查询与处理。

4、至于这段二进制数据是如何加密的,呵呵,告诉你吧,几乎所有加密算法的加密结果都是二进制数据(纯数学运算的结果,不要认为密匙都是可显示字符),它可能是 MD5 也可能是 Sha1,在国内呢,MD5 的居多……

5、你平时看到的MD5密文,其实也是二进制数据,只不过是以十六进制字符串的方式表示罢了,和base64编码的目的一样,使之成为可显示字符串,方便管理。

6、所以,如果假设这段二进制为MD5加密的,那么只需要将这段二进制数据以十六进制方式显示(用各种base64编码/解码小工具即可),即可得到传统的MD5密文,例如  SI/crom508IRZV5829iGpg== 解码后的二进制数据所对应的十六进制字符串为:488fdcae89b9d3c211655e7cdbd886a6,然后,你懂的……

7、大部分MD5破解网站都支持Base64格式的MD5密文,直接破解即可。

反推该过程,这段base64是如何产生的呢?

1、加密程序拿到用户输入的明文密码。

2、经过各种加密算法(MD5、Sha1等)的处理后(纯数学运算),得到一串二进制数据。(加密后的原始密匙)

3、有的程序将二进制数据转换为十六进制字符串形式显示。(传统的加密结果显示方式)

4、又有的程序将二进制数据经过Base64编码后,转换为可显示字符串。(例如上边的密文)

5、还有的程序直接将二进制数据直接存入到数据库。(后期不方便管理和查询)

就这样……

╮(╯_╰)╭

留言评论(旧系统):

佚名 @ 2013-01-28 11:21:44

呵呵,多谢核总,还劳烦您专门开个博文来解释。

本站回复:

木事…… ╮(╯_╰)╭

zero @ 2014-01-07 10:40:10

请问最终的这个字符串“SI/crom508IRZV5829iGpg==”原始明文应该是什么啊? 488fdcae89b9d3c211655e7cdbd886a6 这个放到几个MD5解密网站上试了试,都还没有出结果,核总直接说了吧。

本站回复:

我勒个去,这都一年了,不记得这是啥了,囧,想不起来了……

佚名 @ 2014-01-29 19:20:52

YW1eFkRKvmg= Base64编码或解码结果: \x61 \x6d \x5e \x16 \x44 \x4a \xbe \x68

本站回复:

╮(╯_╰)╭