

md5sum/opensslコマンドで取得したハッシュ値と同じ値をjavaで取得したいのですが  
期待した結果がえられません。  
同じ結果を得るにはjavaでどのように書いたらよいのでしょうか？

（１）md5sum/opensslコマンドの場合

[code]

    $ echo abc | md5sum
    0bee89b07a248e27c83fc3d5951213c1  -
    $ echo abc | openssl md5
    (stdin)= 0bee89b07a248e27c83fc3d5951213c1
    $ 
    
[/code]

（２）javaプログラムの場合(Apache Common Codec, MessageDigest)  
・ソース

[code]

    package test;
    
    import java.math.BigInteger;
    import java.security.MessageDigest;
    import org.apache.commons.codec.digest.DigestUtils;
    
    public class Md5sum2 {
    
        public static void main(String[] args) {
            String str = "abc";
    
            // 1. MessageDiget
            try {
                byte[] input = str.getBytes("UTF-8");
                MessageDigest md = MessageDigest.getInstance("MD5");
                byte[] md5 = md.digest(input);
                BigInteger bigInt = new BigInteger(1, md5);
                String result = bigInt.toString(16);
                System.out.println("result : " + result);
            } catch(Exception ex) {
                ex.printStackTrace();
                throw new RuntimeException(ex);
            }
    
            // 2. Apache Commons Codec
            String out = DigestUtils.md5Hex(str);
            System.out.println("result : " + out);
        }
    }
    
[/code]

・実行結果

[code]

    $ java -cp ~/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:. test.Md5sum2
    result : 900150983cd24fb0d6963f7d28e17f72
    result : 900150983cd24fb0d6963f7d28e17f72
    $ 
    
[/code]


CC BY-SA 3.0
2015-05-09T00:29:32.033
9970
2017-08-04T04:45:52.553
2017-08-04T04:45:52.553
19110
9650
question
java md5 md5sum
linuxのmd5sumコマンドと同じ出力をjavaで取得する


`echo`は文字列の末尾に改行がない場合に自動的に改行を追加します。  
ですから、`echo abc | md5sum`は実際には `"abc\n"`のMD5ハッシュを計算しています。

Javaでは、

[code]

    String str = "abc\n";
    
[/code]

とすれば`echo abc | md5sum`と同じ結果を得ることができます。

逆に、`echo abc |
md5sum`でJavaと同じ結果を得たい場合は、`echo`に`-n`オプションを付けると、改行が追加されないので`"abc"`そのもののMD5ハッシュを計算することができます。

[code]

    $ echo -n abc | md5sum
    900150983cd24fb0d6963f7d28e17f72  -
    
[/code]


CC BY-SA 3.0
2015-05-09T01:06:23.747
9972
2015-05-09T01:13:45.943
2015-05-09T01:13:45.943
3639
3639
9970
answer