上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符串(消息摘要).
简单了解
MD5(Message Digest Algorithm 5),翻译过来是消息摘要算法第五版,按照惯例,我们推理可能也有MD2,MD3这样名字的历史版本..
即使完全不了解这个算法的原理,我们也可以从命名中看出一些眉道,所谓摘要,就是一个简短的概括,像我写过的毕业论文,上来第一部分就是摘要,它对后面长篇大论的文章做了一个简短有力的概括,其实MD5的作用也有点这样的味道,我们来看一段关于描述MD5算法作用的文字:
MD5的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数),它主要用于确保数据传输的完整性和一致性.
假设A要给远方的B发送一个文本文件,有100万字,当B收到文件的时候,该怎么知道这个文件在传过来的途中有没有被篡改呢,要是有人中途截断并篡改了文件内容那就不太妙了,这时候MD5就派上用场了,不管多大的文件,通过MD5加密之后都会得到一个定长的字符串,一般是32位,这时候A先对文件用MD5加密一下,得到的一串密文顺便也传给B,当B收到后文件,同样对文件用MD5加密一下,看看得到的密文是否和A传过来的一致,如果一致,说明这个文件是安全的.这样就确保了数据传输的完整性.
事实上,我们从网络上下载文件的时候,有时候下载的文件后面都有一段MD5的密文,比如 MD5(e8027a87676ea48b3a3c9b0a4d8d87a0),作用和上面我举得例子类似(我觉得是这样....).
MD5是一种公开的不可逆的算法,意味着是没有办法直接破解密文得到源数据信息的,md5可以对一个对一个任意大小的文件进行哈希运算,得到一个唯一的32位字符串.
简单了解了MD5的功能,就可以直接看代码了.
java代码实现MD5
网友评论


