Другим методом, который также укорачивает строку, было бы вычисление хеша md5 / sha1 строки (объединенного с семенем, если хотите):
import hashlib
>>> hashlib.sha1("12234_1_Hello'World_34433_22acb_4554344_accCC44").hexdigest()
'e1153227558aadc00a2e90b5013fdd6b0804fdfb'
Теоретически вы должны получить набор строк с очень небольшим количеством столкновений и с фиксированной длиной. Библиотека hashlib
содержит массив различных хеш-функций, которые вы можете использовать таким образом, с разными размерами вывода.
Edit: Вы также сказали, что вам нужна обратимая строка, так что это не сработает для этого. Однако, на самом деле, многие веб-платформы, которые используют чистые URL-адреса, как вы, похоже, хотите реализовать, используют хеш-функции для вычисления сокращенного URL-адреса, а затем сохраняют этот URL-адрес вместе с другими данными страницы для обеспечения возможности обратного просмотра.