Heim  >  Artikel  >  Backend-Entwicklung  >  关于php MD5的16位raw binary输出跟32位字符串输出

关于php MD5的16位raw binary输出跟32位字符串输出

WBOY
WBOYOriginal
2016-06-13 11:00:291033Durchsuche

关于php MD5的16位raw binary输出和32位字符串输出

因为需要php aes加密数据,考虑使用php MD5 输出16位的binary作为密钥。

google 了一下“php MD5 16”? 竟然发现很多文章建议用截取字符串的方式实现,语句如下所示:

?

也许他们需要一个长度是16位的随机字符串, 更可能的是他们理解错了MD5的真正意义。

?

erlang:md5("aaa") .%%输出:>

从上面的语句可以看出,erlang:md5输出一个16位的binary数据,每一位为8bit,16*8 共128bits。

也就是说MD5输出的是一组,16位(16Byte)128bits的数据。

?

PHP: md5("aaa") //输出:47bce5c74f589f4867dbd57e9ca9f808

?

MD5 binary format and HEX string?format 对照表如下所示:

binary: 71 188 229 199 79 88 159 72 103 219 213 126 156 169 248 8
16进制表示: 47 bc e5 c7 4f 58 9f 48 67 db d5 7e 9c a9 f8 08

71 如果用十六进制表示就是47; 188十六进制就是bc , 等等。

?

现在我们来看一看PHP的MD5函数:

?

PHP:md5("aaa")输出的32位长度的字符串:47, bc, e5, c7, 4f, 58, 9f, 48, 67, db, d5, 7e, 9c, a9, f8, 08,

其实相当于将16byte binary 数据用HEX表示出来。 类似于颜色RGB(255,255,255)=>#FF FF FF。

?

PHP:md5("aaa", ture) 输出16byte binary数据。binary数据解析如下所示:?

?

$bin = md5("aaa",ture);for($a=0;$a<strlen echo ord><p>?</p>
<div class="clear">
                 
              
              
        
            </div></strlen>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:2PHP缓存种Nächster Artikel:java 时间戳跟PHP时间戳 的转换