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

#lua #adobe #hmac #sha256 #lightroom

#lua #adobe #hmac #sha256 #lightroom

Вопрос:

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

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

  • Мне нужно использовать 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 отказывается загружать плагин, и в журнале тоже ничего нет

Большое спасибо за вашу помощь

Ответ №1:

Сначала я бы убедился, что ваш код работает за пределами Lightroom. Похоже, что модуль HMAC, на который вы ссылались, имеет некоторые другие зависимости: для него требуются модули «glue», «bit» и «ffi». Из них bit и ffi являются двоичными модулями, и я не уверен, что вы сможете загрузить их в Lightroom (если они там уже не доступны). В любом случае, вы, вероятно, не сможете запустить его в LR, если у вас нет необходимых модулей и вы не можете запустить его без проблем за пределами LR.

Ответ №2:

Если вам просто нужно получить хэш SHA256, есть способ сделать это в Lightroom

Я разместил свой вопрос здесь и смог получить ответ. Но там не было ссылки на это в документации SDK (Lightroom SDK)

 local sha = import 'LrDigest'
d = sha.SHA256.digest ("Hello world")
 

но, к сожалению, не было HMAC, поэтому я решил использовать md5 с солью, потому что это занимало слишком много моего времени

Ответ №3:

Потратил довольно много времени, пытаясь найти решение: -/ LrDigest не документирован, спасибо Adobe! Решение:

 local LrDigest = import "LrDigest"
LrDigest.HMAC.digest(string, 'SHA256', key)