¿Es posible tomar el hash del resultado conocido y el algoritmo?

0

Estoy tratando de construir un sitio de casino en PHP donde los usuarios puedan jugar a la ruleta. Encontré este algoritmo que quiero usar para "rodar" los números:

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

El resultado será 22 en este ejemplo.

  • secret es sha256 hash
  • round es el número de rondas jugadas, donde cada giro hará +1

Me preocupa que alguien que conozca el algoritmo pueda revertirlo para tomar el hash.

¿Esta solución es buena? (Soy un principiante para este tipo de problemas).

    
pregunta Martin Rebroš 23.05.2016 - 13:46
fuente

1 respuesta

5

Bien, el primer problema es: ¿necesita que estos rollos sean reproducibles y predecibles? Es decir, ¿necesita poder avanzar rápidamente al 10000º o rebobinar al 20, y obtener el mismo resultado?

Si no necesita esa función, entonces ¿por qué no usa un generador de números aleatorios criptográficamente seguro en su lugar ? De esta manera, ni usted ni un atacante pueden predecir los resultados, y no tiene que preocuparse por revelar accidentalmente su secreto en ningún momento.

(Si quieres esa característica, creo que realmente vale la pena preguntar por qué. ¿Estarían felices los usuarios con la idea de que todos los resultados están predeterminados, solo que se mantienen en secreto? También hay un sesgo leve en su implementación, y tiene el desafío adicional de mantener su secreto en secreto, etc. etc.)

    
respondido por el cloudfeet 23.05.2016 - 14:12
fuente

Lea otras preguntas en las etiquetas