繁体   English   中英

MD5散列不同的值

[英]MD5 hashing different values

在将数据从应用程序发送到服务器之前,我使用MD5哈希。

Java代码:

    String hash = "";
    String name = nameText.getText();
    try{
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update((name + score + HASH_SALT).getBytes());
        byte byteData[] = md.digest();

        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < byteData.length; i++) {
            sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
        }
        hash = sb.toString();
    } catch (Exception e) {
        hash = "";
    }


    try {
        String urlParameters = PARAM_NAME + name + PARAM_SCORE + score + PARAM_HASH + hash;
        URL url = new URL(HIGHSCORES_ADD + urlParameters);
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        urlConnection.getInputStream();
        urlConnection.disconnect();
    } catch (Exception e){
        Gdx.app.log( "HighScores", "Could not submit score" + e.getMessage());
    } finally {
        ((Game)Gdx.app.getApplicationListener()).setScreen(new MainMenu());
    }

PHP代码:

<?php
         $db = mysql_connect("host", "root", "password") or die('Could not connect: ' . mysql_error());
         mysql_select_db("db1") or die('Could not select database');

         $score = (int)$_GET['score'];
         $hash = $_GET['hash'];
         $name = mysql_real_escape_string($_GET['name'], $db);
         $timestamp = date("Y-m-d H:i:s");
         $secretKey="mySecretKey";

         $real_hash = md5($score . $hash . $secretKey);

         if($real_hash == $hash) {
             $query = "INSERT INTO highscores (id, date, score, name) VALUES (NULL, '$timestamp', '$score', '$name')";
             $result = mysql_query($query) or die('Query failed: ' . mysql_error());
         }
    ?>

在PHP代码中, $hash$real_hash值不同,但是两个文件中的数据相同。 是什么导致这种差异? 我应该怎么做才能解决这个问题?

md.update((name + score + HASH_SALT).getBytes());

md.update()中的String与php代码中md5()中的String不同,因此您无法获得相同的Hash。

$real_hash = md5($score . $hash . $secretKey);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM