Pertanyaan Bagaimana saya bisa menghasilkan MD5 hash?


Apakah ada metode untuk menghasilkan hash MD5 string di Java?


888
2018-01-06 09:45


asal


Jawaban:


java.security.MessageDigest adalah temanmu. Panggilan getInstance("MD5") untuk mendapatkan pesan MD5 yang dapat Anda gunakan.


534
2018-01-06 09:47



Itu MessageDigest kelas dapat memberi Anda contoh dari pencernaan MD5.

Ketika bekerja dengan string dan kelas crypto pastikan untuk melakukannya selalu tentukan pengkodean yang Anda inginkan representasi byte. Jika Anda hanya menggunakan string.getBytes() itu akan menggunakan default platform. (Tidak semua platform menggunakan default yang sama)

import java.security.*;

..

byte[] bytesOfMessage = yourString.getBytes("UTF-8");

MessageDigest md = MessageDigest.getInstance("MD5");
byte[] thedigest = md.digest(bytesOfMessage);

Jika Anda memiliki banyak data, lihat di .update(byte[]) metode yang bisa disebut berulang kali. Lalu telepon .digest() untuk mendapatkan hash yang dihasilkan.


647
2018-01-06 09:58



Anda mungkin juga ingin melihat DigestUtils kelas apache komon codec proyek, yang menyediakan metode yang sangat mudah untuk membuat pencampuran MD5 atau SHA.


249
2018-01-06 14:51



Jika Anda benar-benar ingin jawaban kembali sebagai string sebagai lawan array byte, Anda selalu bisa melakukan sesuatu seperti ini:

String plaintext = "your text here";
MessageDigest m = MessageDigest.getInstance("MD5");
m.reset();
m.update(plaintext.getBytes());
byte[] digest = m.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;
}

245
2018-01-07 19:20



Temukan ini:

public String MD5(String md5) {
   try {
        java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
        byte[] array = md.digest(md5.getBytes());
        StringBuffer 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 (java.security.NoSuchAlgorithmException e) {
    }
    return null;
}

di situs di bawah ini, saya tidak mengambil kredit untuk itu, tetapi ini adalah solusi yang berhasil! Bagi saya banyak kode lain tidak berfungsi dengan baik, saya akhirnya kehilangan 0 dalam hash. Yang satu ini tampaknya sama dengan PHP. sumber: http://m2tec.be/blog/2010/02/03/java-md5-hex-0093


148
2017-07-03 21:11



Di sini adalah bagaimana saya menggunakannya:

final MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(string.getBytes(Charset.forName("UTF8")));
final byte[] resultByte = messageDigest.digest();
final String result = new String(Hex.encodeHex(resultByte));

di mana Hex adalah: org.apache.commons.codec.binary.Hex dari Proyek Apache Commons.


82
2017-10-01 10:28



Saya baru saja mengunduh commons-codec.jar dan mendapat php sempurna seperti md5. Disini adalah manual.

Cukup impor ke proyek Anda dan gunakan

String Url = "your_url";

System.out.println( DigestUtils.md5Hex( Url ) );

dan di sana Anda memilikinya.


78
2017-07-30 22:51



Saya telah menemukan ini menjadi cara yang paling jelas dan ringkas untuk melakukannya:

MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(StandardCharsets.UTF_8.encode(string));
return String.format("%032x", new BigInteger(1, md5.digest()));

55
2018-05-08 08:16