Разделение строки на итератор

Я обычно использую SHA1 и соль с идентификатором пользователя (или некоторая другая определенная для пользователя информация), и иногда я дополнительно использую постоянную соль (таким образом, у меня есть 2 части к соли).

SHA1 теперь также считают несколько поставившим под угрозу, но до намного меньшего градуса, чем MD5. При помощи соли (любая соль), Вы предотвращаете использование дженерика таблица радуги для нападения на хеши (у некоторых людей даже был Google использования успеха как своего рода таблица радуги путем поиска хеша). Взломщик мог очевидно генерировать таблицу радуги с помощью соли, так вот почему необходимо включать определенную для пользователя соль. Тем путем они должны будут генерировать таблицу радуги для каждой записи в Вашей системе, не всего один для Вашей всей системы! С тем типом соления даже MD5 прилично безопасен.

23
задан pythonic metaphor 3 January 2011 в 16:12
поделиться

1 ответ

Вот 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()
        )
0
ответ дан 29 November 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: