Quindi, ho questo:
So che un codice è stato usato per generare una sequenza casuale, e sembrava più o meno come questo:
#include <iostream>
#include <string>
int main() {
const std::string alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
std::string temp = "1234567890";
srand(MAGICNUMBER);
for (int i = 0;; ++i) {
for (int j = 0; j < 10; ++j) {
temp[j] = alphabet[rand() % alphabet.size()];
}
std::cout << temp << std::endl;
}
}
È stato usato per generare una sequenza di 124660967 stringhe, l'ultima delle quali era "2lwd9JjVnE", e poi si è fermata. Il compilatore utilizzato era g ++ 4.8 a 64 bit per Linux. Quello che voglio è trovare la stringa 124660968th, cioè quella che sarebbe stata stampata in seguito. L'avvertenza, ovviamente, è che non conosco il MAGICNUMBER
. Sono abbastanza sicuro che sia possibile forzare tutte le possibilità, ma ci vorranno millenni, a quanto pare. Ho provato a curiosare in rand()
del codice sorgente, ma non lo capisco davvero, tanto meno lo sfrutto. È possibile trovare quella stringa in un tempo più o meno ragionevole?
UPD È persino possibile generare ciò che dovrebbe andare dopo che la mia stringa senza ha trovato il seme?