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