- Сообщения
- 4,020
- Репутация
- 626
AutoIt: 3.3.4.0
Версия: 1.0
Категория: Кодирование / Шифрование
Описание:
Данная библиотека содержит только 3 (пока) функции, основное предназначение которых - сравнение различного рода объектов. В случае, если объект строка - лучше использовать обычный StringCompare. Но для строки, также, можно подсчитать его MD5-хеш, что на мой взгляд является достаточно полезным временами (скрипты с аутентификацией). Особенно полезным, на мой взгляд, библиотека может оказаться в случае сравнения одно- и дву-мерных массивов. Массивы размерностью выше 2 не обрабатываются (Возможно в будущем).
Принцип сравнения прост:
Объект 1D - берется элемент и в зависимости от его типа ставится префикс. И так для каждого элемента. Затем, все полученные строки конкатенируются и для полученной суммарной строки считается его MD5-хеш. Этот хеш, в дальнейшем, используется для сравнения различных одномерных массивов.
Объект 2D - в этом случае, каждая строка массива рассматривается как отдельный 1D-массив. Для него проделывается операция из предыдущего пункта. Все полученные хеш-суммы, в итоге, конкатенируются и для нее считается итоговая хеш-сумма. В дальнейшем, эта сумма используется для сравнения различных 2D-массивов.
Преимущества - при сравнении массивов нет необходимости сравнивать каждый элемент с каждым при повторных сравнениях или сравнениях нескольких объектов между с обой. Достаточно один раз посчитать хеш-сумму для необходимых массивов и производить сравнения хеш-сумм.
Недостатки:
Главный недостаток - Возможно есть баги или несоответствия. Прошу пользователей протестировать применив всю фантазию
Врожденный недостаток - Наличие MD5-коллизий, связанный с использованием MD5. Это унаследованное неудобство и от него никуда не деться. Но, как говорят эксперты, вероятность случайного появления коллизии ничтожна мала. Пока что, все коллизии искуственные.
Код/Пример:
Источник: Форум русского сообщества пользователей AutoIt
Автор(ы): Kaster (kastermight [at] gmail dot com)
Версия: 1.0
Категория: Кодирование / Шифрование
Описание:
Данная библиотека содержит только 3 (пока) функции, основное предназначение которых - сравнение различного рода объектов. В случае, если объект строка - лучше использовать обычный StringCompare. Но для строки, также, можно подсчитать его MD5-хеш, что на мой взгляд является достаточно полезным временами (скрипты с аутентификацией). Особенно полезным, на мой взгляд, библиотека может оказаться в случае сравнения одно- и дву-мерных массивов. Массивы размерностью выше 2 не обрабатываются (Возможно в будущем).
Принцип сравнения прост:
Объект 1D - берется элемент и в зависимости от его типа ставится префикс. И так для каждого элемента. Затем, все полученные строки конкатенируются и для полученной суммарной строки считается его MD5-хеш. Этот хеш, в дальнейшем, используется для сравнения различных одномерных массивов.
Объект 2D - в этом случае, каждая строка массива рассматривается как отдельный 1D-массив. Для него проделывается операция из предыдущего пункта. Все полученные хеш-суммы, в итоге, конкатенируются и для нее считается итоговая хеш-сумма. В дальнейшем, эта сумма используется для сравнения различных 2D-массивов.
Преимущества - при сравнении массивов нет необходимости сравнивать каждый элемент с каждым при повторных сравнениях или сравнениях нескольких объектов между с обой. Достаточно один раз посчитать хеш-сумму для необходимых массивов и производить сравнения хеш-сумм.
Недостатки:
Главный недостаток - Возможно есть баги или несоответствия. Прошу пользователей протестировать применив всю фантазию
Врожденный недостаток - Наличие MD5-коллизий, связанный с использованием MD5. Это унаследованное неудобство и от него никуда не деться. Но, как говорят эксперты, вероятность случайного появления коллизии ничтожна мала. Пока что, все коллизии искуственные.
Код/Пример:
Код:
#include <MD5.au3>
$a = 'The quick brown fox jumps over the lazy dog'
Dim $b[3] = [1, 2, 3]
Dim $c[4] = [1, 'a', Binary('0xFF871A')]
Dim $d[3][4] = [[1, 2, 3, 4], ['a', 'b', 'c', 'd'], ['1', 'True', 3, False]]
Dim $e[3] = [1, 2, 3]
Dim $f[3] = [1, 2, '3']
ConsoleWrite('"' & $a & '" has MD5 - ' & _MD5_MD5ForString($a) & @CRLF & _
'"an array $b = [1, 2, 3]" has conventional MD5 hash - ' & _MD5_MD5ForObject($b) & @CRLF & _
'and another array "$c = [1, a, 0xFF871A]" has conventional MD5 hash - ' & _MD5_MD5ForObject($c) & @CRLF & _
'2D array has MD5 - ' & _MD5_MD5ForObject($d) & @CRLF & _
'Comparison of 2 identical objects $b and $e - ' & _MD5_ObjectsCmp($b, $e) & @CRLF & _
'Comparison of 2 "pseudo" identical objects $b and $f - ' & _MD5_ObjectsCmp($b, $f) & @CRLF _
)
ConsoleWrite(@CRLF)
Источник: Форум русского сообщества пользователей AutoIt
Автор(ы): Kaster (kastermight [at] gmail dot com)