我有我的 php 应用程序,当我创建用户时,我运行了它。
$random_salt = hash('sha512', uniqid(mt_rand(1, mt_getrandmax()), true));
// Create salted password
$userPwd = hash('sha512', $userPwd . $random_salt);
下一步,当我尝试登录时,我通过这个 javascript 捕获了我散列的密码 p.value = hex_sha512(userPwdControl.value);
然后在运行这个
$hashPassword = hash('sha512', $userPassword . $row1['userSalt']);
以上所有代码均通过 php 运行。
现在我想通过我的 android 执行此功能 p.value = hex_sha512(userPwdControl.value);获取哈希值,我首先通过 Java 代码进行尝试,如下所示。但是我在下面得到了空的结果。
StringBuffer stringBuffer = new StringBuffer();
try {
String message = "myPass";
MessageDigest digest = MessageDigest.getInstance("512");
byte[] hashedBytes = digest.digest(message.getBytes("UTF-8"));
for (int i = 0; i < hashedBytes.length; i++) {
stringBuffer.append(Integer.toString((hashedBytes[i] & 0xff) + 0x100, 16)
.substring(1));
}
stringBuffer.toString();
} catch (NoSuchAlgorithmException | UnsupportedEncodingException ex) {
}
System.out.println("TEST :"+stringBuffer);
最佳答案
你能试试下面的代码吗?对您的代码做了一些小改动。
String resultString = "";
try {
byte[] buffer = password.getBytes();
MessageDigest md = MessageDigest.getInstance("SHA-512");
md.update(buffer);
byte[] digest = md.digest();
for(int i = 0 ; i < digest.length ; i++) {
int b = digest[i] & 0xff;
if(Integer.toHexString(b).length() == 1)
resultString = resultString + "0";
resultString = resultString + Integer.toHexString(b);
}
} catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}
关于java - 类似sha512的php for android密码登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41009848/