NAS
О расшифровке алгоритсма. На самом деле принцип кодирования очень прост.
первый разряд кода символа имеет ключ:
Q R O P U V S T I J G H M N K L
второй разряд кода символа имеет ключ:
K L I J O P M N C D A B G H E F
Стартовый символ: 0 -> 1С (в шеснадцатиричной системе счисления)
смещение первого разряда отностельно таблицы чисел и заглавных символов - +7
смещение первого разряда отностельно таблицы заглавных символов и строчных символов - +6
смещение второго разряда при переходе на следующий символ - -2
т.е. формула вычисления кода символа:
символ = [код символа hex] - (30 - 1C) + (4B-20)*[номер сивола в строке];
сокращенно:
символ = [код символа hex] - 20 + 2B*[номер сивола в строке];
(соответственно все считаем в шеснадцатиричной системе)
из полученного символа берем 2 последнии цифры и переводим в соответствии с ключами:
десятки:
0 1 2 3 4 5 6 7 8 9 A B C D E F
K L I J O P M N C D A B G H E F
единицы:
0 1 2 3 4 5 6 7 8 9 A B C D E F
Q R O P U V S T I J G H M N K L
Получаем наш код...
Теперь попробуем объяснить теорию... %-)
для кодирования берутся просто 2 последовательности заглавных символов длинной в 16, для десятков и единиц с смещением, в нашем случае последовательности такие:
десятки: ABCDEFGHIJKLMNOP
единицы: GHIJKLMNOPQRSTUV
потом эти последовательности разбиваются на пополам, потом на пары, и собираются в виде:
Вторая половина Первая половина
(2-я, 1-я, 4-я, 3-я) + (2-я, 1-я, 4-я, 3-я)
К сожалению я не видел кода crhbgnf поэтому не могу сказать какой функцией это делается, принцип простой: замена соседних пар, замена соседних пар пар, замена соседних пар пар пар.
соответственно собираем 2 готовые последовательности (ключи)
Потом идет смещение относительно первого символа "0" - 14(hex) или 20(dec) (может тоже как-то вычисляется относительно смещения последовательностей символов);
между последовательностями цифр, заглавных букв и строчных букв смещение +7 и +6 соответственно, прямо как в таблице кодировки, поэтому я подозреваю, что символы между этими последовательностями (например: = < > ?) тоже можно использовать в пароле (просто в приведенных выше паролях их не было, поэтому точно сказать не могу)
как только доходим до символа z - код продолжается, но от него отнимают 2 десятка и эти коды применяются для следующего символа в пароле...
Сотни, соответственно, отбрасываются...
Вроде все...
Если, что не по человечески объяснил, или может опечатался где, напишите объясню...