看到博客有人问,其实这是个很简单、很基础的东西,但仍有很多人根本不知道,这里简单讲一下……
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、还有的程序直接将二进制数据直接存入到数据库。(后期不方便管理和查询)
就这样……
╮(╯_╰)╭
留言评论(旧系统):