md5是一种散列函数。php 中md5加密结果默认长度是32 位,可将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法。该结果字符长度是固定的,而且是唯一的。示例:
?php
$str="hello baiduzhodao !";
echo md5($str);
//81252f2a10b9a1a8c4c18c72f1c25555
$str2="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasadfasdfasdfasdfsadfasdf !";
echo md5($str2);
//8e23206af66aefa1aad5699b685eceec
?
加密后为128位(bit),按照16进制(4位一个16进制数)编码后,就成了32个字符。MD5并不是加密算法zhidao,而是摘要算法。加密算法是可逆的,摘要算法是理专论上不可逆的,详细步骤:
1、md5算法主要应用在密码领域,为了防止明文传输密码的危险性,一般会用密码的md5值来代替密码本身。
2、md5算法的工具可以帮助我们计算字符串所对应的md5值。
3、首先创建一个MD5Utils工具类。
4、然后来写md5算法,事实上你不需要md5算法具体是怎么实现的,这里我们也只是调用了java自带的md5算法,只不过对其结果进行了优化,转换成了16进制的字符串了而已。
5、虽然md5本身是不可逆的,但是因为其唯一性,会遭到遍历破解,所以一般使用md5的时候还会进行加盐操作,即在md5运算结果上再加入自己的加密算法,例如这里为将结果都加上字符串yan,这样就不容易被破解了,加盐的加密算法也可以自己直接封装在工具类中。
MD5是面向32位,.NET用的是32位,
MD5需要获得一个随机长度的信息并产生一个128位的信息摘要
MD5
类的
ComputeHash
方法将哈希作为
16
字节的数组返回。请注意,某些
MD5
实现会生成
32
字符的十六进制格式哈希。若要与此类实现进行互操作,请将
ComputeHash
方法的返回值格式化为十六进制值。
我见过的都是算成 32 个字符的,也就是 128位。
好像也有别的版本,可以得到 16 个字符,24个字符等等。
MD5是摘要算法,是不可逆的。
我觉得加密总得对应一个解密,可以得到原来的信息,但是MD5不可以,所以MD5不是加密算法。
MD5加密后的值是128bit的,按4位二进制组合成一个十六进制,所以最后出来的十六进制字符串是32个,比如d3379f609e1aa88da2f50018d4fa218f。
要说被MD5加密的字符串,是没有限制的。