Mapa incrementando o intervalo de números inteiros para uma base de seis dígitos 26 max, mas imprevisivelmente

Desejo criar um encurtador de URL para um caso de uso e tipo de usuário final específico que eu tenha segmentado. Eu decidi que eu quero que as URLs sejam armazenadas internamente de acordo com uma chave inteira de incremento automático. No entanto, também é necessário que uma chave seja representada para usuários no url como base de seis dígitos 26 (a-z * 6) E não é possível prever qual a chave de URL de base 26 é baseada na chave de número inteiro incremental. Em outras palavras, a primeira chave de url não deve ser aaaaaa, então da próxima vez que alguém criar uma url, ela não deve ser aaaaab, etc, e nenhum loop gerará uma url aleatória e entrará no banco de dados para ver se ela já existe repetidamente.

A segunda parte dos requisitos (URLs na base 26 difíceis de prever por um estranho) é a parte mais interessante. Idealmente, eu gostaria de algum tipo de mapeamento algorítmico 1-1 de todos os números no intervalo 26 ^ 6 para outro número no mesmo intervalo que eu possa imprimir na base 26, e que eu posso desfazer o algoritmo e não precisa armazenar em uma tabela separada quando eu quero procurar o URL. Como posso fazer isso?

questionAnswers(8)

yourAnswerToTheQuestion