2012-02-28 13 views
0

私はMD5をjavaで取得しようとしていますが、負の値を受け取ります。 MD5の結果が負の値になることはありますか?md5で負の値を取得

これは私のコードです:

 MessageDigest md5 = MessageDigest.getInstance("MD5"); 
     byte[] sigBytes = md5.digest((sharedSecret+"api_key"+API_KEY).getBytes()); 
     api_sig = new BigInteger(sigBytes).toString(16); 

はありがとうございました。

+0

@Vache - これはJavaであり、C#ではありません。 – MByD

+0

申し訳ありませんが、私はちょうど起こったときに閉会に投票すべきではありません。 – Vache

答えて

2

new BigInteger(sigBytes)は、署名を符号付き整数として解釈しているため、負の数値を取得することは可能です。文字列にmd5値の16進数表記を含めるには、ここでいくつかの回答を見てください:How can I generate an MD5 hash?

+0

'toString(16)'は16進表記を取得するには悪い方法ですか? – SnapDragon

0

私は右のMD5ハッシュ文字列を取得するために以下の方法を使用しますjbowesは最初のビットを意味する符号付き整数(数かどうかを表すように、new BigInteger(sigBytes)署名を解釈されるために示唆したように

import org.apache.commons.codec.binary.Base64; 
0

:):Base64では、Apacheコモンズからクラスであること

public static String createMD5Hash(String input) { 
    try { 
     MessageDigest m = MessageDigest.getInstance("MD5"); 
     byte[] out = m.digest(input.getBytes()); 
     return new String(Base64.encodeBase64(out)); 
    } catch (NoSuchAlgorithmException e) { 
     return null; 
    } 
} 

注正または負である)。バイトを符号なしの数字として解釈する場合は、代わりにnew BigInteger(1, sigBytes)を使用してください。

関連する問題