3

SHA-512 を使用してパスワードをハッシュし、mysql データベースに保存しています。sha-512 への入力に特殊文字を含めないという要件はありますか? パスワードは「Qwerty123.1」と「Qwerty123」です。同じように扱われていますが、「Qwerty.11」は上記と同じではありません。何が問題ですか?

私が使用しているコードは次のとおりです。

BASE64Decoder decoder=new BASE64Decoder();
byte[] b=decoder.decodeBuffer(r1);            //r1 is the string containing password

MessageDigest md=MessageDigest.getInstance("SHA-512");
md.update(b);
byte[] plaintext=md.digest();
BASE64Encoder encoder=new BASE64Encoder();
String digest1=encoder.encode(plaintext);   //digest1 contains the msg digest
4

1 に答える 1

4

r1 は有効な base64 でエンコードされた文字列ですか? 有効なBase64配列ではないものをデコードしようとしていて、BASE64Decoderが何らかの形でサイレントに失敗しているため、同じ結果が得られているようです。次のようなことを試しましたか:

byte[] b = r1.getBytes("UTF-8");
MessageDigest md=MessageDigest.getInstance("SHA-512");
md.update(b);
byte[] plaintext=md.digest();
BASE64Encoder encoder=new BASE64Encoder();
String digest1=encoder.encode(plaintext);   //digest1 contains the msg digest
于 2012-02-15T09:40:44.837 に答える