WoW LibHash аддон Dragonflight/Wrath of the Lich King Classic 2024 скачать
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Скачать

Описание

Хочешь карту со своим ником? Discount 10%Оформить ❤️

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") -- и так далее...

Поделиться:

Комментарии

Добавить комментарий