1. ホーム
  2. android

[解決済み] AndroidにおけるMD5ハッシュ

2023-01-14 10:50:52

質問

私は、シンプルなC# HTTPリスナーと「会話」する必要があるシンプルなアンドロイドクライアントを持っています。私は、POST リクエストでユーザー名/パスワードを渡すことによって、基本的なレベルの認証を提供したいと思います。

MD5 ハッシュは C# では些細なことで、私のニーズには十分なセキュリティを提供しますが、アンドロイド側でこれを行う方法を見つけることができないようです。

編集: MD5 の弱点について提起された懸念に対処するために、C# サーバーは、私のアンドロイド クライアントのユーザーの PC 上で実行されます。多くの場合、彼らは自分の LAN で wi-fi を使用してサーバーにアクセスしますが、自己責任でインターネットからアクセスすることもできます。また、サーバー上のサービスは、私がコントロールできないサードパーティのアプリケーションへの MD5 のパススルーを使用する必要があります。

どのように解決するのですか?

ここで は、あなたが使うことのできる実装です (最新の Java 規約を使うために更新されました。 for:each のループになります。 StringBuilder の代わりに StringBuffer ):

public static String md5(final String s) {
    final String MD5 = "MD5";
    try {
        // Create MD5 Hash
        MessageDigest digest = java.security.MessageDigest
                .getInstance(MD5);
        digest.update(s.getBytes());
        byte messageDigest[] = digest.digest();

        // Create Hex String
        StringBuilder hexString = new StringBuilder();
        for (byte aMessageDigest : messageDigest) {
            String h = Integer.toHexString(0xFF & aMessageDigest);
            while (h.length() < 2)
                h = "0" + h;
            hexString.append(h);
        }
        return hexString.toString();

    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return "";
}

基本的なセキュリティレベルでも関わるシステムには推奨できませんが、(MD5 は壊れていると考えられており、簡単に悪用される可能性があります )、基本的な作業には十分である場合もあります。