Как использовать HMAC в Lua - Lightroom плагин
Первое, что я должен упомянуть, я действительно плохо знаком с Луа, и, пожалуйста, будьте терпеливы, если вы считаете, что мой вопрос слишком глуп
Вот мое требование
- Мне нужно использовать HMAC-sha256 для разработки плагинов Lightroom, так как я использую это для безопасности.
Я пытался использовать это, но безуспешно https://code.google.com/p/lua-files/wiki/hmac
Вот шаги, которые я следовал
- Получил код https://code.google.com/p/lua-files/source/browse/hmac.lua и сохранил как файл 'hmac.lua' в моей директории плагинов.
- Получил код из этого https://code.google.com/p/lua-files/source/browse/sha2.lua и сохранил как файл 'sha2.lua'
Теперь в файле я использую это так
local hmac = require'hmac'
local sha2 = require'sha2'
--somewhere doend the line inside a function
local hashvalue = hmac.sha2('key', 'message')
но, к сожалению, это не работает, и я не уверен, что я делаю неправильно. Может кто-нибудь посоветовать мне, что я здесь делаю неправильно? Или есть более простой и лучший способ сделать это с хорошим примером.
РЕДАКТИРОВАТЬ: я делаю это, чтобы получить результат. Когда я включаю этот код, плагин перестает работать. Я не могу получить выходную строку, когда я делаю это
hashvalue = hmac.sha2('key', 'message')
local LrLogger = import 'LrLogger'
myLogger = LrLogger('FlaggedFiles')
myLogger:enable("logfile")
myLogger:trace ("=========================================\n")
myLogger:trace ('Winter is coming, ' .. hashvalue)
myLogger:trace ("=========================================\n")
и Lightroom отказывается загружать плагин, и в логе тоже ничего нет
Большое спасибо за Вашу помощь
3 ответа
Сначала я бы убедился, что ваш код работает за пределами Lightroom. Кажется, что модуль HMAC, на который вы ссылались, имеет некоторые другие зависимости: для него требуются модули "glue", "bit" и "ffi". Из них bit и ffi являются бинарными модулями, и я не уверен, что вы сможете загрузить их в Lightroom (если они там уже не доступны). В любом случае, вы, вероятно, не сможете запустить его в LR, если у вас нет необходимых модулей и вы не сможете запустить его без проблем за пределами LR.
Если вам просто нужно получить хеш SHA256, есть способ сделать это Lightroom
Я разместил свой вопрос здесь и смог получить ответ. Но там не было никакой ссылки на это в документации SDK (Lightroom SDK)
local sha = import 'LrDigest'
d = sha.SHA256.digest ("Hello world")
но, к сожалению, не было HMAC, поэтому я решил использовать md5 с солью, потому что это занимало слишком много моего времени
Потратил довольно много времени, пытаясь найти решение:-/ LrDigest не задокументировано, спасибо Adobe! Решение:
local LrDigest = import "LrDigest"
LrDigest.HMAC.digest(string, 'SHA256', key)