ネットワーク データ送信において、暗号化は非常に重要な部分です。 MD5 は、任意の長さのデータを 128 ビットのハッシュ値に変換する、広く使用されている暗号化アルゴリズムです。 Java では、MD5 アルゴリズムを使用してデータを暗号化し、16 進数形式の文字列に変換することが簡単にできますが、そのような暗号化された文字列を PHP で使用する必要がある場合、どのように変換すればよいでしょうか?
まず、Java と PHP の文字列エンコーディングの違いを理解する必要があります。 Java では、文字列はデフォルトで UTF-16 でエンコードされますが、PHP では、デフォルトで ASCII エンコードが使用されます。したがって、文字列変換を実行するときは、最初に文字列エンコーディングを変換する必要があります。
Java では、次のコードを使用して文字列を MD5 暗号化し、16 進文字列に変換できます。
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util { public static String getMD5(String message) { MessageDigest md; try { md = MessageDigest.getInstance("MD5"); md.update(message.getBytes()); byte[] mdBytes = md.digest(); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < mdBytes.length; i++) { int val = ((int) mdBytes[i]) & 0xff; if (val < 16) { hexValue.append("0"); } hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return ""; } } }
PHP では、次のコードを使用して文字列を暗号化できます MD5 暗号化および 16 進文字列への変換:
function stringToMd5Hex($str) { $str = iconv('UTF-8', 'UTF-16LE', $str); $md5 = md5($str); $hex = ''; for ($i = 0; $i < strlen($md5); $i += 2) { $hex .= chr(hexdec($md5[$i] . $md5[$i + 1])); } return bin2hex($hex); }
このコードでは、iconv 関数を使用して文字列を UTF-8 エンコードから UTF-16LE エンコードに変換します。次に、PHP の組み込み md5 関数を使用して MD5 暗号化を行います。最後に、chr 関数を使用して暗号化結果をバイナリ文字列に変換し、bin2hex 関数を使用して 16 進文字列に変換します。
このような処理により、JavaでのMD5暗号化結果をPHPで利用可能な16進数の文字列に変換することで、JavaとPHP間の暗号化データ通信を実現します。
以上がJava md5 16進数をphpに変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。