我想知道你们能不能帮我把一些java代码转换成python。基本上,我试图获得与java代码执行的相同的哈希输出。目前(在python中)我只需要使用hashlib模块将一些字符串转换为sha256。在
我试过用谷歌搜索,结果什么也没找到,朋友们也帮不上忙,所以这是我最后的选择。下面是我从python&java得到的散列输出。显然python是不正确的散列,而java代码是正确的散列。在
Java代码输出哈希(正确):947e238ef26e56d3de2fe2480268c23297d91efe6355b3e5fac0dcf63
Python代码输出哈希(不正确):
^{pr2}$
java代码散列了一个字符串,它被拆分成变量,我被困在for循环上,我无法将其转换成python。请注意,我是一个没有经验的傻瓜,谢谢:P
Java代码:String pass = "6b508/^!zVl?947e238ef26e56d3de2fe2480268c23297d91efe6355b3e5fac0dcf63";
String secretKey = "Wr79mk1PXFac!#%";
String loginKey = pass.substring(0, 5);
String randomKey = pass.substring(5, 13);
String originalHash = pass.substring(13);
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update((loginKey + randomKey + secretKey).getBytes(StandardCharsets.UTF_8));
//obtain hash
byte[] hash = md.digest();
StringBuilder hexString = new StringBuilder();
for (byte aHash : hash) {
String hex = Integer.toHexString(0xff & aHash);
if (hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
String newHash = hexString.toString().substring(0, 56);
if (newHash.equals(originalHash)) {
//hash is right
return true;
}
Python代码(我尝试转换):key = "6b508"
salt = "Wr79mk1PXFac!#%"
rand = "/^!zVl?"
hash = hashlib.sha256(key+rand+salt).hexdigest()
raw_input(hash[0:57])
任何帮助都将不胜感激,谢谢。在