Как использовать HMAC в Lua - Lightroom плагин

Первое, что я должен упомянуть, я действительно плохо знаком с Луа, и, пожалуйста, будьте терпеливы, если вы считаете, что мой вопрос слишком глуп

Вот мое требование

  • Мне нужно использовать HMAC-sha256 для разработки плагинов Lightroom, так как я использую это для безопасности.

Я пытался использовать это, но безуспешно https://code.google.com/p/lua-files/wiki/hmac

Вот шаги, которые я следовал

  1. Получил код https://code.google.com/p/lua-files/source/browse/hmac.lua и сохранил как файл 'hmac.lua' в моей директории плагинов.
  2. Получил код из этого 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)
Другие вопросы по тегам