MD5即Message-Digest Algorithm 5, 信息学中使用广泛的哈希算法
这个算法具有很多性质:
压缩性: 对于任意长度的输入, 输出长度总是相同的
容易计算: 线性时间复杂度
抗修改性: 对原数据的一点点修改都会导致最终结果的巨大变化
抗碰撞性: 已知原数据和MD5值很难生成与原数据不同但MD5值相同的数据
MD5可以生成任意一个文件的“数字指纹”,对文件的微小改动都会直接导致数字指纹的巨大变化。
注意:MD5加密中文需要使用UTF-8编码,但Windows下默认是GBK编码,两种编码得到的结果是不一样的
MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。