J'ai conçu un générateur aléatoire simple qui fait tourner deux nombres de manière chaotique en utilisant une méthode de multiplication et de module. Cela fonctionne très bien pour cela.
Si je devais l'utiliser comme générateur de chiffrement, il serait cependant vulnérable à une attaque connue en texte brut, étant donné qu'un attaquant peut inverser la graine à partir d'une série de nombres aléatoires de manière efficace sur le plan des calculs.
Pour prouver que le chiffrement est rompu, trouvez une paire légale de valeurs de départ qui génèrent 7 zéros de suite dans la plage [0; 255], en utilisant le moins d'énergie, de temps CPU, etc. possible.
Voici le générateur aléatoire écrit en JavaScript:
function seed(state1,state2){
//Constants
var mod1=4294967087
var mul1=65539
var mod2=4294965887
var mul2=65537
function random(limit){
//Cycle each state variable 1 step
state1=(state1*mul1)%mod1
state2=(state2*mul2)%mod2
//Return a random variable
return (state1+state2)%limit
}
//Return the random function
return random
}
//Initiate the random generator using 2 integer values,
//they must be in the ranges [1;4294967086] and [1;4294965886]
random=seed(31337,42)
//Write 7 random values in the range [0;255] to screen
for(a=0;a<7;a++){
document.write(random(256)+"<br>")
}
J'ai fait un outil pour tester les paires de nombres candidats, il peut être trouvé ici .
Pour les 3 prochains jours, aucun spoilers n'est autorisé , une réponse ne doit contenir qu'un ensemble de chiffres, et il doit bien sûr être différent de ceux publiés par les solveurs précédents. Par la suite, nous vous encourageons à publier du code et à expliquer votre approche.
Modifier, la quarantaine est terminée: les
réponses doivent contenir à la fois un ensemble unique de chiffres et d'explications et de code pour documenter la méthode de résolution.
La solution la plus élégante gagne.
Pour mémoire:
écrire un programme qui peut trouver une solution rapidement est élégant.
Il est élégant de créer un programme qui utilise efficacement les fonctionnalités d'un GPU pour le faire encore plus rapidement.
Faire le travail sur un "matériel de musée" est élégant.
Trouver une méthode de solution qui peut être utilisée en utilisant uniquement un stylo et du papier est très élégant.
Expliquer votre solution d'une manière instructive et facilement compréhensible est élégant.
L'utilisation d'ordinateurs multiples ou très coûteux n'est pas élégante.