Никто не пишет имиджборды на питоне, поэтому пришлось реинжинирить алгоритм такого удобного хеша.
Надо просто привести фразу к многобайтной кодировке, зашифровать и взять несколько символов. Кажется очень простым?
- надо привести фразу к многобайтной национальной кодировке. для японских строк нужна кодировка
shift-jis
, для польских не знаю, но пример из викиZwykły tripkod: User !ozOtJW9BFA Bezpieczny tripkod: User !!Oo43raDvH61
не работает вutf-8
- не просто зашифровать, а
crypt
шифрованием, но библиотека crypt(3) реализована только для *nix-систем, на Windows не работает. оказалось, достаточно алгоритма DES - взять надо последние десять символов с конца зашифрованной со специальной солью многобайтной строки
Другие варианты возможны, но не будут совместимыми с оригинальным трипкодом
некоторые реализации
- на перле из немецкой вики https://de.wikipedia.org/wiki/Tripcode
$salt = substr($tripkey.'H.', 1, 2); # tripkey ist Shift-JIS kodiert
$salt =~ s/[^\.-z]/\./go; # ersetze alle Zeichen kleiner als "." und größer als "z" durch "."
$salt =~ tr/:;<=>?@[\\]^_`/A-Ga-f/; # ersetze alle Zeichen aus ":;<=>?@[\]^_`" durch ihr Äquivalent aus "ABCDEFGabcdef"
$trip = crypt($tripkey, $salt); # Unix-crypt(3)-Funktion
$trip = substr($trip, -10); # entferne Salt am Anfang
print '◆'.$trip;
- на втором питоне https://pypi.org/project/tripcode/ с собственной реализацией шифрования. репозиторий больше не существует, проект изменился https://github.com/Cairnarvon/triptools
- парсинг имиджборд одним файлом https://py4chan.sourceforge.net/
- исходник данной реализации взят с японской текстоборды https://blog.utgw.net/entry/2021/01/05/195013
- дополнение к предыдущему: расширенная реализация для строк больше 12 символов https://github.com/utgwkk/20210103-sketch-tripcode/blob/master/tripcode.py
pip install -U tripcode3
>>> from tripcode import tripcode
>>> tripcode('tea')
'WokonZwxw2'
>>> tripcode(u'kami')
'yGAhoNiShI'
- дополнить кодировками