package ewa;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.math.BigInteger;
/**
*
* @author Lotus
*/
public class md5Hash {
public static void main(String[] args) throws NoSuchAlgorithmException {
String test = "abc";
MessageDigest md = MessageDigest.getInstance("MD5");
try {
md.update(test.getBytes("UTF-8"));
byte[] result = md.digest();
BigInteger bi = new BigInteger(result);
String hex = bi.toString(16);
System.out.println("Pringting result");
System.out.println(hex);
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(md5Hash.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
バイトから16進数への変換をテストしています。終了したら、最終結果に文字列の先頭にマイナス記号が付きます。なぜこれが起こりますか?私はドキュメントを読んだが、それはマイナス記号を追加すると言うが、私はそれを理解していない。マイナス記号はハッシュ結果に影響しますか?私は私のデータベースなぜ私のbigintegerの前にマイナス記号がありますか?
ありがとう、それは問題を解決しました。私はちょうど私のウェブサイトのための非常に単純なハッシュを実装しており、バイナリまたはblobとしてハッシュを格納することによって何を意味するのか分からない – sutoL
@kyrogue、例えば。 MySQLについては、[このドキュメント](http://dev.mysql.com/doc/refman/5.0/en/binary-varbinary.html)を参照してください。他のデータベースでも同様でなければなりません。バイナリタイプを使用すると、ハッシュを文字列に変換するステップが回避されます。 MD5は現在弱いと考えられるので、SHA-256のような別のハッシュを使うことも考慮する必要があります。 –
私はデータベースのためのマイクロソフトのアクセスを使用するつもりです、それはデータベースのパスワードにmd5hashを表示することによって、非常に簡単な学校のプロジェクトです、それは私にいくつかの余分なマークを得ることができます – sutoL