将Java转换为Python

问题描述 投票:-9回答:1

我想知道你们是否可以帮助我将一些java代码转换为python。基本上我正在尝试获得java代码执行的相同哈希输出。目前我所有(在python中)都使用hashlib模块将一些字符串转换为sha256。

我试过谷歌搜索,我什么也没发现,朋友们也帮不上忙,所以这是我的最后一招。这是我从python和java得到的哈希输出。显然python是不正确的哈希,而java代码是正确的哈希。

Java代码输出哈希(正确):

947e238ef26e56d3de2fe2480268c23297d91efe6355b3e5fac0dcf63

Python代码输出哈希(不正确):

88c5f638b023a5740676960747833fc4eacc20697c92e1b46b0384ebf

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 CODE(我尝试转换):

key = "6b508"
salt = "Wr79mk1PXFac!#%"
rand = "/^!zVl?"
hash = hashlib.sha256(key+rand+salt).hexdigest()
raw_input(hash[0:57])

任何帮助将不胜感激,谢谢。

java python hash hashlib
1个回答
1
投票

错误发生在Java代码中。 pass.substring(5, 13)返回"/^!zVl?9",但“9”不是randomKey的一部分。

请改用String randomKey = pass.substring(5, 12)String originalHash = pass.substring(12)

© www.soinside.com 2019 - 2024. All rights reserved.