Skip to content

Latest commit

 

History

History
55 lines (44 loc) · 3.46 KB

README.md

File metadata and controls

55 lines (44 loc) · 3.46 KB

Tripcode \ Python3

Никто не пишет имиджборды на питоне, поэтому пришлось реинжинирить алгоритм такого удобного хеша.

Алгоритм

Надо просто привести фразу к многобайтной кодировке, зашифровать и взять несколько символов. Кажется очень простым?

  1. надо привести фразу к многобайтной национальной кодировке. для японских строк нужна кодировка shift-jis, для польских не знаю, но пример из вики Zwykły tripkod: User !ozOtJW9BFA Bezpieczny tripkod: User !!Oo43raDvH61 не работает в utf-8
  2. не просто зашифровать, а crypt шифрованием, но библиотека crypt(3) реализована только для *nix-систем, на Windows не работает. оказалось, достаточно алгоритма DES
  3. взять надо последние десять символов с конца зашифрованной со специальной солью многобайтной строки

Другие варианты возможны, но не будут совместимыми с оригинальным трипкодом

некоторые реализации
$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;

Использование

pip install -U tripcode3
>>> from tripcode import tripcode
>>> tripcode('tea')
'WokonZwxw2'
>>> tripcode(u'kami')
'yGAhoNiShI'

TODO

  • дополнить кодировками

Lines of code Downloads Statistic GitHub