ホームページ >バックエンド開発 >PHPチュートリアル >php MD5の16ビット生バイナリ出力と32ビット文字列出力について

php MD5の16ビット生バイナリ出力と32ビット文字列出力について

WBOY
WBOYオリジナル
2016-06-13 13:03:481196ブラウズ

php MD5
の16ビット生バイナリ出力と32ビット文字列出力について

データの暗号化には php aes が必要なため、php MD5 を使用して 16 ビットのバイナリをキーとして出力することを検討してください。

Google で「php MD5 16」を検索すると、文字列をインターセプトする方法を示唆する記事がたくさん見つかりました。

;

?

おそらく、彼らは 16 ビットの長さのランダムな文字列を必要としているのでしょう。おそらく、彼らは MD5 の本当の意味を誤解しています。

?

erlang:md5("aaa") .
%%输出:<<71,188,229,199,79,88,159,72,103,219,213,126,156,169,248,8>>
<p>上記のステートメントからわかるように、erlang:md5 は 16 ビットのバイナリ データを出力します。各ビットは 8 ビット、16*8、合計 128 ビットです。 </p>
<p>つまり、MD5 は 16 ビット (16Byte) 128 ビットのデータのセットを出力します。 </p>
<p>?</p>
<p>PHP: md5("aaa") //出力: 47bce5c74f589f4867dbd57e9ca9f808</p>
<p>?</p>
<p>MD5 バイナリ形式と HEX 文字列形式の比較表は次のとおりです: </p>
<table style="border: 0pt solid #302158;">
<tr>
<td>binary:</td>
<td>71</td>
<td>188</td>
<td>229</td>
<td>199</td>
<td>79</td>
<td>88</td>
<td>159</td>
<td>72</td>
<td>103</td>
<td>219</td>
<td>213</td>
<td>126</td>
<td>156</td>
<td>169</td>
<td>248</td>
<td>8</td>
</tr>
<tr>
<td>16进制表示:</td>
<td>47</td>
<td>bc</td>
<td>e5</td>
<td>c7</td>
<td>4f</td>
<td>58</td>
<td>9f</td>
<td>48</td>
<td>67</td>
<td>db</td>
<td>d5</td>
<td>7e</td>
<td>9c</td>
<td>a9</td>
<td>f8</td>
<td>08</td>
</tr>
</table>
<p>71 を 16 進数で表すと 47、188 を 16 進数で表すと bc などになります。 </p>
<p>?</p>
<p>次に、PHP の MD5 関数を見てみましょう: </p>
<p>?</p>
<p>PHP: md5("aaa") による 32 ビット長の文字列出力: 47、bc、e5、c7、4f、58、9f、48、67、db、d5、7e、9c、a9、f8、08 、</p>
<p>実際には、16 バイトのバイナリデータを HEX で表現するのと同じです。 カラー RGB(255,255,255)=>#FF FF FF と同様です。 </p>
<p>?</p>
<p>PHP:md5("aaa", true) は 16 バイトのバイナリデータを出力します。バイナリデータの解析は次のとおりです:?</p>
<p>?</p>
<pre name="code" class="php">$bin = md5("aaa",ture);
for($a=0;$a<strlen($bin);$a++){
    echo ord( $bin[$a] ).','; //每一都位打印出来
}
//输出:71,188,229,199,79,88,159,72,103,219,213,126,156,169,248,8,

?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。