SHA-512特殊字符处理

时间:2012-02-13 08:42:33

标签: java sha512

我使用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 个答案:

答案 0 :(得分: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