7

MD5文字列に変換する方法を誰かが知っていますか?私の場合、パスワードをデータベースのMD5に保存しました。パスワードを取得して、編集目的で文字列で表示しようとしています。

これは、文字列を暗号化形式に変換するために私が行ったことです。

public static String encrypt(String source) {
   String md5 = null;
   try {
         MessageDigest mdEnc = MessageDigest.getInstance("MD5"); //Encryption algorithm
         mdEnc.update(source.getBytes(), 0, source.length());
         md5 = new BigInteger(1, mdEnc.digest()).toString(16); // Encrypted string
        } 
    catch (Exception ex) {
         return null;
    }
    return md5;
}

パスワードを編集するために暗号化形式を文字列に変換する方法がわかりません。

4

4 に答える 4

14
    String password = "123456";

    MessageDigest md = MessageDigest.getInstance("MD5");
    md.update(password.getBytes());

    byte byteData[] = md.digest();

    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < byteData.length; i++)
        sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));

    System.out.println("Digest(in hex format):: " + sb.toString());
于 2012-07-26T08:38:49.780 に答える
5

MD5は片側ハッシュ関数です。したがって、デコードすることはできません。これが、多くのWebサイトで、新しいパスワードを作成して「パスワードを取得する」オプションがある理由です。

MD5の詳細

于 2012-07-26T08:40:39.227 に答える
0

文字列をMD5に変換するためのコード

private static String convertToMd5(final String md5) throws UnsupportedEncodingException {
        StringBuffer sb=null;
        try {
            final java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
            final byte[] array = md.digest(md5.getBytes("UTF-8"));
            sb = new StringBuffer();
            for (int i = 0; i < array.length; ++i) {
                sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));
            }
            return sb.toString();
        } catch (final java.security.NoSuchAlgorithmException e) {
        }
        return sb.toString();
    }
于 2013-01-23T09:18:01.417 に答える
-3

それが最もエレガントな方法だと思います。

public String getMD5(String data) {
        String result = null;
        MessageDigest md;
        try {
            md = MessageDigest.getInstance("MD5");
            md.update(data.getBytes(Charset.forName("UTF-8")));
            result = String.format(Locale.ROOT, "%032x", new BigInteger(1, md.digest()));
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalStateException(e);
        }
        return result;
}

`

于 2014-07-05T13:51:41.280 に答える