È possibile utilizzare l'hash per conoscere il risultato e l'algoritmo?

0

Sto cercando di costruire un sito di casinò in PHP dove gli utenti possono giocare alla roulette. Ho trovato questo algoritmo che voglio usare per "rollare" i numeri:

<?php
$secret = 'aa94c4384abc04456c45459cdedf1120f2cc0ac09bc4724322b6831bd7f43d6f';
$round = 123456;
$hash = hash("sha256",$secret.'-'.$round);
$roll = hexdec(substr($hash, 0, 8)) % 37;
echo($roll);
?>

Il risultato sarà 22 in questo esempio.

  • secret è sha256 hash
  • round è il numero di round giocati, in cui ogni giro fa +1

Sono preoccupato che qualcuno che conosce l'algoritmo sia in grado di capovolgerlo per prendere l'hash.

Questa soluzione è buona? (Sono un principiante per questo tipo di problemi.)

    
posta Martin Rebroš 23.05.2016 - 13:46
fonte

1 risposta

5

OK, quindi il primo problema è: hai bisogno che questi rotoli siano riproducibili e prevedibili? Cioè, devi essere in grado di avanzare rapidamente al 10000 o riavvolgere il 20, e ottieni lo stesso risultato?

Se non hai bisogno di quella funzione, allora perché non usare un generatore di numeri casuali crittograficamente sicuro invece ? In questo modo, né tu né un utente malintenzionato puoi prevedere i risultati e non devi preoccuparti di rivelare il tuo segreto in modo casuale in qualsiasi momento.

(Se fai vuoi quella caratteristica, penso che valga davvero la pena chiedersi il perché: i tuoi utenti sarebbero contenti dell'idea che tutti i risultati siano predeterminati, tenuti segreti? lieve pregiudizio nella tua implementazione, e hai la sfida in più di mantenere il tuo segreto un segreto, ecc. ecc. ecc.)

    
risposta data 23.05.2016 - 14:12
fonte

Leggi altre domande sui tag