Die Frage ist eher ob eine Verschlüsselung überhaupt sinnvoll ist, um zu verhindern das falsche Highscorewerte gesendet werden können. Schließlich kann man z.b. durch Reverse Engineering einfach die Punktzahl verändern, bevor sie gesendet wird. Besser wäre vielleicht eine Userverwaltung auf dem Server, sodass man sich erst registrieren muss bevor man dann seine Highscores hochladen kann. Damit wird schonmal verhindert das man unter dem Namen jemand anderes falsche Werte senden kann. Und auffällige User kannst du dann einfach löschen.
Eine einfache Verschlüsselung, die viellecht nicht besonders sicher ist, ist RC4:
PHP
PHP-Code:
<?php
function rc4($pwd, $data, $ispwdHex = 0)
{
if ($ispwdHex)
$pwd = @pack('H*', $pwd); // valid input, please
$key[] = '';
$box[] = '';
$cipher = '';
$pwd_length = strlen($pwd);
$data_length = strlen($data);
for ($i = 0; $i < 256; $i++)
{
$key[$i] = @ord($pwd[$i % $pwd_length]);
$box[$i] = $i;
}
for ($j = $i = 0; $i < 256; $i++)
{
$j = ($j + $box[$i] + $key[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
for ($a = $j = $i = 0; $i < $data_length; $i++)
{
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$k = $box[(($box[$a] + $box[$j]) % 256)];
$cipher .= chr(ord($data[$i]) ^ $k);
}
return $cipher;
}
?>
C/++
PHP-Code:
#define S_SWAP(a,b) do { char t = S[a]; S[a] = S[b]; S[b] = t; } while(0)
void rc4_skip(const char *key, size_t keylen, size_t skip,char *data, size_t data_len)
{
int i, j, k;
char S[256], *pos;
size_t kpos;
for (i = 0; i < 256; i++)
S[i] = i;
j = 0;
kpos = 0;
for (i = 0; i < 256; i++)
{
j = (j + S[i] + key[kpos]) & 0xff;
kpos++;
if (kpos >= keylen)
kpos = 0;
S_SWAP(i, j);
}
i = j = 0;
for (k = 0; k < skip; k++)
{
i = (i + 1) & 0xff;
j = (j + S[i]) & 0xff;
S_SWAP(i, j);
}
pos = data;
for (k = 0; k < data_len; k++)
{
i = (i + 1) & 0xff;
j = (j + S[i]) & 0xff;
S_SWAP(i, j);
*pos++ ^= S[(S[i] + S[j]) & 0xff];
}
}
void rc4(char *buf, const char *key)
{
rc4_skip(key, strlen(key), 0, buf, strlen(buf));
}
Allerdings solltest du die verschlüsselten Daten vor dem Senden als POST noch kodieren(z.b. base64).
Um es nicht so einfach zu machen das Passwort auszulesen, könntest du z.b. immer noch das aktuelle Datum anhängen. So ist das Passwort jeden Tag ein anderes.
mfg