SHA-512 специальная обработка символов - PullRequest
2 голосов
/ 13 февраля 2012

Я использую 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

1 Ответ

4 голосов
/ 15 февраля 2012

Является ли 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
...