Eu projetei um gerador aleatório simples que alterna dois números de maneira caótica, usando um método de multiplicação e módulo. Funciona muito bem para isso.
Se eu fosse usá-lo como um gerador de cifras, seria vulnerável a um ataque de texto simples conhecido, já que um invasor pode fazer engenharia reversa da semente a partir de uma série de números aleatórios de uma maneira computacionalmente eficiente.
Para provar que a cifra está quebrada, localize um par legal de valores iniciais que gerem 7 zeros em uma linha no intervalo [0; 255], usando o mínimo de energia, tempo de CPU etc. etc.
Aqui está o gerador aleatório escrito em 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>")
}
Eu criei uma ferramenta para testar pares de números candidatos, ela pode ser encontrada aqui .
Nos três dias seguintes, nenhum spoiler é permitido , uma resposta deve conter apenas um conjunto de números e, é claro, deve ser um conjunto diferente dos publicados pelos solucionadores anteriores. Posteriormente, você é encorajado a postar código e explicar sua abordagem.
Editar, a quarentena acabou: as
respostas devem conter um conjunto exclusivo de números, explicação e código para documentar o método de solução.
A solução mais elegante vence.
Para constar:
Escrever um programa que pode encontrar uma solução rapidamente é elegante.
Criar um programa que utilize os recursos de uma GPU de maneira eficiente para fazê-lo ainda mais rápido é elegante.
Fazer o trabalho em um pedaço de "material de museu" é elegante.
Encontrar um método de solução viável que possa ser utilizado usando apenas caneta e papel é muito elegante.
Explicar sua solução de maneira instrutiva e facilmente compreensível é elegante.
O uso de computadores múltiplos ou muito caros é deselegante.