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