相关文章推荐
谦逊的面包  ·  Entity Framework 异常: ...·  6 小时前    · 
欢乐的铁链  ·  @Override public ...·  6 小时前    · 
谦和的西红柿  ·  31. Python ...·  59 分钟前    · 
才高八斗的小狗  ·  Compiler Error CS1001 ...·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I'm trying to generate an MD5 hash using Java and Shell but the problem is I get different results using :

    public String generateHash(String name) throws UnsupportedEncodingException, NoSuchAlgorithmException {
    MessageDigest digester = MessageDigest.getInstance("MD5");
    digester.update(name.getBytes());
    byte[] md5Bytes = digester.digest();
    String md5Text = null;
    md5Text = bytesToHex(md5Bytes);
    return md5Text;
    public static String bytesToHex(byte[] bytes) {
    char[] hexChars = new char[bytes.length * 2];
    for (int j = 0; j < bytes.length; j++) {
        int v = bytes[j] & 0xFF;
        hexChars[j * 2] = hexArray[v >>> 4];
        hexChars[j * 2 + 1] = hexArray[v & 0x0F];
    return new String(hexChars);

and using :

md5sum

How can I get the same result as the "md5sum" command in Java ?

Under the assumption that

private static final char[] hexArray = "0123456789abcdef".toCharArray();

both methods, i.e. you program and md5sum, produce the same result. Be careful to not accidentaly add any newlines.

You can compare the result of both of these example to check that you get the same output:

System.out.println(generateHash("ABCDEF"));
System.out.println(generateHash("ABCDEF\n"));
echo -n  "ABCDEF" | md5sum
echo "ABCDEF" | md5sum

Output:

8827a41122a5028b9808c7bf84b9fcf6
f6674e62795f798fe2b01b08580c3fdc
                Thank you, this solved my problem. I didn't notice that I had a "\n" in my String in Java.
– Mehdi
                May 25, 2020 at 10:25
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.