WoW LibHash аддон Shadowlands/classic 2021 скачать
logo
wow addon LibHash

LibHash

Версия игры: 8.3.0
Всего загрузок: 38
Обновлено: May 14, 2020
Создано: May 14, 2020
Скачать LibHashСкачать Предыдущие версии

Предыдущие версии

Название Размер Обновлено Версия игры Загрузок
1.0.0 release 18.34 KB May 14, 2020 8.3.0 38 скачать LibHash 1.0.0 releaseСкачать

Описание

Lib: Хэш

Описание

Эта библиотека предоставляет функции для расчета дайджеста сообщений.
Эта библиотека представляет собой порт на чистомЛуаша модуль выступил Егор Skriptunoff: на GitHub проекта

Поддерживаемые хэши:

Луа
АЛГОРИТМ MD5 -- ЛГ.MD5(сообщение)
SHA-1 -- LH. sha1(сообщение)
-- SHA2
SHA-224 -- LH. sha224 (сообщение)
SHA-256 -- LH. sha256(сообщение)
SHA-384 -- LH. sha384 (сообщение)
SHA-512 -- LH. sha512(сообщение)
АЛГОРИТМ SHA-512/224 -- ЛГ.sha512_224(сообщение)
АЛГОРИТМ SHA-512/256 -- ЛГ.sha512_256(сообщение)
-- SHA3
SHA3-224 -- ЛГ.sha3_224(сообщение)
SHA3-256 -- ЛГ.sha3_256(сообщение)
SHA3-384 -- ЛГ.sha3_384(сообщение)
SHA3-512 -- ЛГ.sha3_512(сообщение)
SHAKE128 -- ЛГ.shake128(digest_size_in_bytes, сообщение)
SHAKE256 -- ЛГ.shake256(digest_size_in_bytes, сообщение)
-- HMAC (применимо к любой хэш-функции из этого модуля, кроме SHAKE)
КСОМ -- ЛГ.HMAC(сокращение от англ ЛГ.any_hash_func, ключ, сообщение)


Использование

Входные данные должны быть представлены в виде двоичной строки: либо в виде целой строки, либо в виде последовательности подстрок (загрузка по частям).
Результат (SHA digest) возвращается в шестнадцатеричном представлении (в виде строки строчных шестнадцатеричных цифр).

Простейший пример использования:

Луа
local LH = LibStub ("LibHash-1.0")
local your_hash = LH. sha256 ("ваша строка")
-- assert(your_hash = = " d14d691dac70eada14d9f23ef80091bca1c75cf77cf1cd5cf2d04180ca0d9911")


ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ


  • Вопрос: Как получить дайджест SHA в виде двоичной строки вместо шестнадцатеричного представления?
  • Один:
    Используйте функцию LH. hex2bin() для преобразования шестнадцатеричного кода в двоичный:

Луа
local LH = LibStub ("LibHash-1.0")
local binary_hash = LH. hex2bin(LH. sha256 ("ваша строка"))
-- assert(binary_hash = = "\209Mi\29\172p\234\218\20\217\242>\248\0\145\188\161\199\\\247|\241\205\\\242\208A\128\202\r\153\17")


  • Вопрос: Как получить SHA digest в виде строки base64?
  • Один:
    Есть функции ЛГ.bin2base64() и ЛГ.base642bin() для преобразования между двоичной и base64:

Луа
local LH = LibStub ("LibHash-1.0")
local binary_hash = LH. hex2bin(LH. sha256 ("ваша строка"))
местные base64_hash = ЛГ.bin2base64(binary_hash)
-- assert(base64_hash == "0U1pHaxw6toU2fI++ACRvKHHXPd88c1c8tBBgMoNmRE=")


  • Вопрос: Как рассчитать SHA-дайджест длинного потока данных?
  • Один:

Луа
local LH = LibStub ("LibHash-1.0")
местные дописывать = ЛГ.и SHA256() -- если аргумент "сообщение" не указан, то "добавление функции" возвращается
добавить("код")
добавить(" ст") - вы должны пройти все части вашего длинного сообщения "добавление функции" (кусок-на-кусок)
добавить("кольцо")
local your_hash = append () -- и, наконец, запросите результат (вызвав функцию "append" без аргумента)
-- assert(your_hash = = " d14d691dac70eada14d9f23ef80091bca1c75cf77cf1cd5cf2d04180ca0d9911")


  • Вопрос: Как рассчитать HMAC-SHA1, HMAC-SHA256 и т. д. ?
  • Один:

Луа
-- Расчет HMAC-SHA1
local LH = LibStub ("LibHash-1.0")
местные your_hmac = ЛГ.HMAC(сокращение от англ ЛГ.SHA1 и "ключ", "ваше сообщение")
-- assert(your_hmac == "317d0dfd868a5c06c9444ac1328aa3e2bfd29fb2")

То же самое в режиме chunk-by-chunk (для длинных сообщений):

Луа
local LH = LibStub ("LibHash-1.0")
местные дописывать = ЛГ.HMAC(сокращение от англ ЛГ.SHA1 и "ваш ключ")
добавить("код")
append ("беспорядок")
append ("возраст")
local your_hmac = добавить()
-- assert(your_hmac == "317d0dfd868a5c06c9444ac1328aa3e2bfd29fb2")


  • Вопрос: Можно ли использовать SHAKE128/SHAKE256 для генерации дайджеста бесконечной длины ?
  • Один:
    Да!
    Например, вы можете преобразовать свой пароль в бесконечный поток псевдослучайных байтов.
    Установите digest_size_in_bytes в значение -1 и получите функцию get_next_part (part_size_in_bytes).
    Вызывайте эту функцию несколько раз, чтобы получить последовательные части бесконечного дайджеста.

Луа
local LH = LibStub ("LibHash-1.0")
местные get_next_part_of_digest = ЛГ.shake128(-1, "быстрая коричневая лиса прыгает через ленивую собаку")
утверждаю(get_next_part_of_digest(5) == "f4202e3c58") -- 5 байт в шестнадцатеричном представлении
утверждаю(get_next_part_of_digest() == "52") - размер=1 принимается, когда опущен
утверждаю(get_next_part_of_digest(0) == "") -- размер=0 имеет действительный размер
утверждаю(get_next_part_of_digest(4) == "f9182a04") - и так далее до бесконечности...
-- Примечание: Вы можете использовать LH.hex2bin() для преобразования этих шестнадцатеричных частей в двоичные строки
-- По определению, результатом встряски с конечным "digest_size_in_bytes" является просто конечный префикс " infinite digest":
утверждаю(ЛГ.shake128(4, "быстрая коричневая лиса прыгает через ленивую собаку")) == "f4202e3c")

Для встряхивания можно комбинировать режим ввода «кусок за куском » с режимом вывода» кусок за куском».:

Луа
local LH = LibStub ("LibHash-1.0")
местные append_input_message = ЛГ.shake128(-1)
append_input_message ("быстрая бурая лиса")
append_input_message ("перепрыгивает через")
append_input_message ("ленивая собака")
локальный get_next_part_of_digest = append_input_message () -- входной поток завершен, теперь мы можем начать получать выходной поток
assert (get_next_part_of_digest(5) = = "f4202e3c58")
assert(get_next_part_of_digest(5) = = "52f9182a04") -- и так далее...

Поделиться:

Комментарии

Add a comment