2017-05-10 12 views
1

と文字列:コンパSHA-256の文章、私は2つの文字列を比較したい

  • "password"
  • "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8"(同じですが、SHA-256で)。

通常、機能isPassValid()は私にtrueを返しますが、私はfalse応答を持っています。どうして ?

これは私のコードです:

public static boolean isPassValid(){ 
    String hash = bin2hex(getHash("password")); 
    return hash.equals("5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8"); 
} 

private static byte[] getHash(String password) { 
    MessageDigest digest=null; 
    try { 
     digest = MessageDigest.getInstance("SHA-256"); 
    } catch (NoSuchAlgorithmException e1) { 
     e1.printStackTrace(); 
    } 
    assert digest != null; 
    digest.reset(); 
    return digest.digest(password.getBytes()); 
} 

private static String bin2hex(byte[] data) { 
    return String.format("%0" + (data.length*2) + "X", new BigInteger(1, data)); 
} 

答えて

5

あなたのライン:

return String.format("%0" + (data.length*2) + "X", new BigInteger(1, data)); 
あなたがに比較している文字列が小文字進文字が含まれている大文字の16進数の文字列を返します

。 "X"を "x"に変更するか、equalsIgnoreCase()と比較してください。

+0

ありがとうございました。** toUpperCase()** –

+0

良いキャッチ.. :) –

関連する問題