Отсюда
Blowfish использует в качестве соли не буквально те самые буквы и цифры, которые вы пишете, а воспринимает их как поток бит, закодированный в свой вариант base64. При этом с помощью 22 символов можно закодировать 132 бита ( 22 символа х 8 бит х 3/4 (кодирование в base64) = 132), из которых реально используются только 128. Соответственно, из последнего символа берется только половина бит.
Это в частности означает, что для 16 разных солей хэши будут одинаковые:
thisisahardcodedsaltaO
thisisahardcodedsaltaP
thisisahardcodedsaltaQ
thisisahardcodedsaltaR
thisisahardcodedsaltaS
thisisahardcodedsaltaT
thisisahardcodedsaltaU
thisisahardcodedsaltaV
thisisahardcodedsaltaW
thisisahardcodedsaltaX
thisisahardcodedsaltaY
thisisahardcodedsaltaZ
thisisahardcodedsaltaa
thisisahardcodedsaltab
thisisahardcodedsaltac
thisisahardcodedsaltad
Cудя по всему, blowfish не берет соль как есть, а сначала раскодирует её, использует, а потом кодирует обратно, и при этом кодировании получается первый из возможных вариантов.