ablaternae / py-tripcode

yet another tripcodes implementation in python, just it works steady

Home Page:https://ablaternae.github.io/py-tripcode

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

yet another tripcodes implementation in python, just it works steady

https://ablaternae.github.io/py-tripcode

License:BSD 2-Clause "Simplified" License


Languages

Language:Python 100.0%