Я обычно использую SHA1 и соль с идентификатором пользователя (или некоторая другая определенная для пользователя информация), и иногда я дополнительно использую постоянную соль (таким образом, у меня есть 2 части к соли).
SHA1 теперь также считают несколько поставившим под угрозу, но до намного меньшего градуса, чем MD5. При помощи соли (любая соль), Вы предотвращаете использование дженерика таблица радуги для нападения на хеши (у некоторых людей даже был Google использования успеха как своего рода таблица радуги путем поиска хеша). Взломщик мог очевидно генерировать таблицу радуги с помощью соли, так вот почему необходимо включать определенную для пользователя соль. Тем путем они должны будут генерировать таблицу радуги для каждой записи в Вашей системе, не всего один для Вашей всей системы! С тем типом соления даже MD5 прилично безопасен.
Вот isplit
функция, которая ведет себя во многом как разделение - можно выключить regex синтаксис с regex
аргумент. Это использует эти re.finditer
функция и возвращает строки "промежуток" соответствия.
import re
def isplit(s, splitter=r'\s+', regex=True):
if not regex:
splitter = re.escape(splitter)
start = 0
for m in re.finditer(splitter, s):
begin, end = m.span()
if begin != start:
yield s[start:begin]
start = end
if s[start:]:
yield s[start:]
_examples = ['', 'a', 'a b', ' a b c ', '\na\tb ']
def test_isplit():
for example in _examples:
assert list(isplit(example)) == example.split(), 'Wrong for {!r}: {} != {}'.format(
example, list(isplit(example)), example.split()
)