Si mal no entiendo lo que hace tu script es componer diferentes hashes en un orden determinado, no?
Yo no sabría romperlo, pero hay dos cosas que me hacen pensar que es un poco peligroso usar eso (ya se que has puesto que no lo usemos en el readme): usas md5 el cuál se considera totalmente roto y la imagen de los hashes es diferente. Si, por ejemplo, usas un hash que escupe strings de 32 bits al principio el resto de hashes escupen, efectivamente, 232 combinaciones distintas (aún usando sha256 o 512 luego). Ya te digo, no sabría romperlo, pero parece tener muy poco sentido. De hecho los hashes internamente ya hacen algo parecido a lo que haces: componer reiteradamente una función compleja. También creo que es un poco putada y requeriría de aclaración sobre cómo guardar la permutación de hashes de forma segura (es una variable con 720 posibles valores únicamente, lo cual lo complica). Y en temas de implementación, ya lo has puesto tú, guardas literalmente el contenido en memoria.
Añado: quizá es igual o más difícil que romper un único hash, y aun así, existen alternativas más sencillas y baratas computacionalmente que te sitúan en un lugar igualmente seguro.
Por otro lado, por qué es diferente o ventajoso esto frente a calcular un único hash? En muchos sitios se usa un único hash a modo de entropy juicer y no se muere nadie..