Project

General

Profile

« Previous | Next » 

Revision 86cbdab1

Added by Leszek Koltunski about 4 years ago

Minor tweaks to the 'Prev' buton in Solving state;
Relax requirements in the Manifest - now only 'android.hardware.faketouch' supporting device is required, i.e. something that supports basic point-click-drag-unclick. No need for full 'android.hardware.touchscreen' thing with its multitouch silliness.

View differences:

src/main/java/org/distorted/scores/RubikScoresDownloader.java
28 28
import java.net.HttpURLConnection;
29 29
import java.net.URL;
30 30
import java.net.UnknownHostException;
31
import java.security.MessageDigest;
32
import java.security.NoSuchAlgorithmException;
31 33

  
32 34
import static org.distorted.objects.RubikObjectList.MAX_LEVEL;
33 35

  
......
98 100
  private static RubikScoresDownloader mThis;
99 101

  
100 102
///////////////////////////////////////////////////////////////////////////////////////////////////
101
// TODO
102 103

  
103
  private static int computeHash(String name, String veri, String country, String lvllist,
104
                                 String objlist, String timelist, int runnings)
104
  private static String computeHash(String stringToHash, byte[] salt)
105 105
    {
106
    int length, hash = 0;
107

  
108
    length = name.length();
109
    for(int i=0; i<length; i++) hash += i*name.charAt(i);
110
    length = veri.length();
111
    for(int i=0; i<length; i++) hash += i*veri.charAt(i);
112
    length = country.length();
113
    for(int i=0; i<length; i++) hash += i*country.charAt(i);
114
    length = lvllist.length();
115
    for(int i=0; i<length; i++) hash += i*lvllist.charAt(i);
116
    length = objlist.length();
117
    for(int i=0; i<length; i++) hash += i*objlist.charAt(i);
118
    length = timelist.length();
119
    for(int i=0; i<length; i++) hash += i*timelist.charAt(i);
120

  
121
    hash *= runnings;
122
    hash %= 541;
123

  
124
    return hash<0 ? -hash: hash;
106
    String generatedPassword;
107

  
108
    try
109
      {
110
      MessageDigest md = MessageDigest.getInstance("MD5");
111
      md.update(salt);
112
      byte[] bytes = md.digest(stringToHash.getBytes());
113
      StringBuilder sb = new StringBuilder();
114

  
115
      for (byte aByte : bytes)
116
        {
117
        sb.append(Integer.toString((aByte & 0xff) + 0x100, 16).substring(1));
118
        }
119

  
120
      generatedPassword = sb.toString();
121
      }
122
    catch (NoSuchAlgorithmException e)
123
      {
124
      return "NoSuchAlgorithm";
125
      }
126

  
127
    return generatedPassword;
125 128
    }
126 129

  
127 130
///////////////////////////////////////////////////////////////////////////////////////////////////
......
330 333
    String lvllist = scores.getUnsubmittedLevellist();
331 334
    String timlist = scores.getUnsubmittedTimelist();
332 335
    String country = scores.getCountry();
333
    int hash = computeHash(name,veri,country,lvllist,objlist,timlist,numRuns);
336
    long epoch = System.currentTimeMillis();
337
    String salt = "cuboid";
334 338

  
335
    String url="https://distorted.org/magic/cgi-bin/submit.cgi";
336
    url += "?n="+name+"&v="+veri+"&r="+numRuns+"&p="+numPlay+"&i="+deviceID+"&e="+mVersion+"d";
337
    url += "&o="+objlist+"&l="+lvllist+"&t="+timlist+"&c="+country+"&h="+hash;
338
    url += "&oo="+RubikObjectList.getObjectList()+"&min=0&max="+MAX_LEVEL+"&lo="+MAX_PLACES;
339
    String url1="https://distorted.org/magic/cgi-bin/submit.cgi";
340
    String url2 = "n="+name+"&v="+veri+"&r="+numRuns+"&p="+numPlay+"&i="+deviceID+"&e="+mVersion+"d";
341
    url2 += "&o="+objlist+"&l="+lvllist+"&t="+timlist+"&c="+country+"&f="+epoch;
342
    url2 += "&oo="+RubikObjectList.getObjectList()+"&min=0&max="+MAX_LEVEL+"&lo="+MAX_PLACES;
343
    url2 += "&h="+computeHash( url2, salt.getBytes() );
339 344

  
340
    return url;
345
    return url1 + "?" + url2;
341 346
    }
342 347

  
343 348
///////////////////////////////////////////////////////////////////////////////////////////////////

Also available in: Unified diff