Хорошая хеш-функция имеет следующие свойства:
, Учитывая хеш сообщения в вычислительном отношении невозможно для взломщика найти другое сообщение таким образом, что их хеши идентичны.
, Учитывая пару сообщения, m' и m, в вычислительном отношении невозможно найти два таким образом, что это h (m) = h (m')
Эти два случая не то же. В первом случае существует существующий ранее хеш, для которого Вы пытаетесь найти коллизию. Во втором случае Вы пытаетесь найти любой два сообщения, которые сталкиваются. Вторая задача значительно легче из-за дня рождения "парадокс".
, Где производительность не состоит в том, что большой проблема, необходимо всегда использовать безопасную хеш-функцию. Существуют очень умные нападения, которые могут быть выполнены путем принуждения коллизий в хеше. При использовании чего-то сильного с самого начала Вы защитите себя от них.
не используют MD5 или SHA-1 в новых проектах. Большинство шифровальщиков, меня включенный, считало бы их поврежденными. Принципиальный источник слабости в обоих из этих проектов - то, что второе свойство, которое я обрисовал в общих чертах выше, не содержит для этих конструкций. Если взломщик может сгенерировать два сообщения, m и m', это оба хеша к тому же значению, они могут использовать эти сообщения против Вас. SHA-1 и MD5 также страдают от нападений расширения сообщения, которые могут фатально ослабить Ваше приложение, если Вы не осторожны.
А более современный хеш, такой как Whirpool является лучшим выбором. Это не страдает от этих, расширение сообщения нападает и использует ту же математику в качестве использования AES для доказательства безопасности против множества нападений.
Hope, которая помогает!
Вот сценарий, предназначенный для обмена параметрами в сценариях Python , вы можете адаптировать его.
Это регулярное выражение сделает это для ваших примеров:
:s/\vcall ("[^"]+"|[^,]+)\s*,\s*("[^"]+"|[^,]+)/call \2, \1/
Это регулярное выражение должно будет становиться все более неприятным, если вы сбежали кавычки и тому подобное в одном из ваших параметров.
На самом деле, я бы просто выделил один параметр (в визуальном режиме), нажал d
, выделил другой параметр и нажал p
; Vim аккуратно вставит то, что находится в реестре, перезаписав то, что вы выделили, и заменит удаленный текст в реестр. Затем переместите курсор и снова нажмите p
. Выделение, d
, выделение, p
, перемещение курсора, p
- обычная комбинация, по крайней мере, в моем vimming.
Итак, с курсором на начало строки, первый пример:
wva"dlvawpF,P
Значение пройти мимо слова «позвонить»