sto facendo una sfida di programmazione e sto impazzendo con una delle sfide. Nella sfida, ho bisogno di calcolare l'MD5 di una stringa. La stringa è data nel seguente formato:hashing stesso carattere più volte
n[c]
: dove n
è un numero e c
è un carattere. Ad esempio: b3[a2[c]]
=>baccaccacc
Tutto è andato bene fino a quando mi è stata data la seguente stringa:
1[2[3[4[5[6[7[8[9[10[11[12[13[a]]]]]]]]]]]]]
Questa stringhe si trasforma in una stringa con 6227020800 a
's. Questa stringa è più di 6 GB, quindi è quasi impossibile calcolarla in tempo reale. Quindi, ecco la mia domanda:
Ci sono delle proprietà di MD5 che posso usare qui?
So che deve esserci un modulo per farlo in breve tempo, e sospetto che debba essere correlato al fatto che tutta la stringa abbia lo stesso carattere ripetuto più volte.
Questo sarà probabilmente per la semplice ricerca inversa e trovare la prima occorrenza '[', sostituire il carattere dopo ('a') con il numero davanti a' ['(' 13', quindi '13 * 'a '') poi indico quella stringa in una variabile, cerca la successiva' ['e prendi' mystoredstring * num' e così via .. – Torxed
@Torxed Questa domanda non riguarda la generazione della stringa effettiva dalla sua rappresentazione compatta (che sarebbe la lettera un tempo di 6227020800, come già affermato dall'OP), ma su come calcolare in modo efficiente l'hash MD5 di una stringa così grande. – Carsten
Posso calcolarlo in circa 14 secondi di tempo della CPU sulla mia macchina. Come definisci "tempo pratico"? – Aya