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 回答