2

MD5 ハッシュを文字列に変換したい:

public String MD5ToString(String plain) {
    try {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.reset();
        md.update(plain.getBytes());
        byte[] digest = md.digest();
        BigInteger bigInt = new BigInteger(1,digest);
        String hashtext = bigInt.toString(16);
        // Now we need to zero pad it if you actually want the full 32 chars.
        while(hashtext.length() < 32 ){
            hashtext = "0"+hashtext;
        }
        return plain;
    } catch (Exception e) {
        System.out.println("Cannot encrypt String to Hash");
        e.printStackTrace();
    }
    return null;
}

しかし、私はMd5を取り戻すだけですか?msの間違いは何ですか?

アップデート:

戻り値の型をハッシュテキストに変更しましたが、ハッシュを文字列に変換したい場合は、別のものを取得するだけです:

String: test
Hash: 098f6bcd4621d373cade4e832627b4f6
String: fb469d7ef430b0baf0cab6c436e70375
4

3 に答える 3

5

コードを注意深く分析しませんでしたplainが、変更されていないオブジェクトを返します。hashTextメソッドから返された MD5 文字列を取得する場合は、オブジェクトを返す必要があります。

于 2012-11-10T14:40:19.273 に答える
3

簡単に送信または保存できる使用可能な文字列を作成するには、通常、base64 でエンコードします (hex よりも約 33% 短くなります)。

Google で見つけることができる多数のチュートリアルの 1 つを次に示します

あなたの正確なケースでは、ヘキサ表現が必要なように見えるので、単に変更したいだけかもしれません

return plain;

return hashtext;
于 2012-11-10T14:40:07.603 に答える