-1

Sha-256を使用してURLをハッシュしようとしていますが、いくつか問題があります。私はバイトを文字列に変換しました。その文字列をログに記録すると、32文字の長さのランド文字ではなく正しく表示されません。これは次のように表示されます。

04-18 11:46:00.427:V / myApp(797):�C�rE�������.mm"7�{���"��Q]m

どんな助けでも大歓迎です

ここに私のコードがあります:

public void hash() throws NoSuchAlgorithmException, UnsupportedEncodingException{

        MessageDigest md = MessageDigest.getInstance("SHA-256");
        md.update(fixturesFeedURL.getBytes("UTF-8"));
        byte[] digest = md.digest();
        String strhash = new String(digest);
        Log.v("myApp", strhash);
    }   
4

2 に答える 2

0

MD5 で行う方法は次のとおりです。

MessageDigest md = MessageDigest.getInstance("MD5");
byte[] b = md.digest(input.getBytes());
StringBuffer output = new StringBuffer();
for (int i = 0; i < b.length; i++) {
  String tmpStr = "0" + Integer.toHexString((0xff & b[i]));
  output.append(tmpStr.substring(tmpStr.length() - 2));
}
return output.toString();

おそらく、MessageDigest アルゴリズムを変更するだけの問題です...

于 2012-04-18T11:21:14.193 に答える
0

あなたの問題は、バイト配列を文字列に変換することです-これを使用してそれを行うことができます:

http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Hex.html#encodeHex(byte[])

于 2012-04-18T11:23:54.703 に答える