Długo nad tym myślałem...
Teoretycznie rzecz biorąc, deszyfrowanie liczb (zwłaszcza dużych) zapisanych w jakimś systemie liczbowym jest łatwe. Np. jeżeli znajdziemy liczbę 10101011110100010101010101, to jesteśmy na 99,9% pewni, że to system dwójkowy, więc możemy zamienić na dziesiętny i finał.
Ale wymyśliłem coś takiego jak szyfr podwójny, w którym chodzi o to, że liczbę z systemu dziesiętnego konwertuje się na liczbę w systemie X, gdzie X < 10 (by nie pojawiły się litery), a następnie tą liczbę w systemie X uznaje się za liczbę w systemie dziesiętnym i konwertuje na inny system.
Być może zamieszałem, więc spieszę z wyjaśnieniem:
Chcę zaszyfrować liczbę 745D szyfrem ósemkowo-szesnastkowym. Najpierw konwertuję liczbę na system ósemkowy, wynikiem jest 13518. Teraz, uznaję tą liczbę za liczbę dziesiętną, czyli mamy 1351D. Teraz tą liczbę konwertuję na szesnastkowy, i wychodzi nam 547H.
Jeżeli chodzi o szyfrowanie do potęg liczby dwa (systemy dwójkowe, czwórkowe, ósemkowe, szesnastkowe itp) nie ma problemu, by wstawić to do jakiegoś programu. Wyliczanie kolejności można by wykonać za pomocą hasła: wystarczy hasło w zmiennej typu string przemienić na tablicę char. Każdy char ma swoją wartość liczbową, więc należy je np. zsumować i na podstawie wyliczonej sumy ustalić kolejność.