Я смотрю на это весь день. Я, вероятно, должен был уйти от этого несколько часов назад; Я мог бы упустить что-то очевидное в этой точке.
Краткая версия: есть ли способ создать и свести асимметрично зашифрованный хэш к разумному количеству однозначных, читаемых человеком символов?
Длинная версия:
Я хочу создать лицензионные ключи для моего программного обеспечения. Мне бы хотелось, чтобы эти ключи были разумной длины (25–36 символов) и легко читались и вводились человеком (поэтому избегайте неоднозначных символов, таких как число 0 и заглавная буква O).
Наконец, - и это, кажется, самое главное - я действительно хотел бы использовать асимметричное шифрование, чтобы затруднить генерацию новых ключей.
У меня есть общий подход: объединить мою информацию (имя пользователя, версию продукта, соль) в строку и сгенерировать из нее хеш SHA1 (), а затем зашифровать хеш своим личным ключом. На клиенте создайте хеш SHA1 () из той же информации, затем расшифруйте лицензию с помощью открытого ключа и посмотрите, есть ли совпадение.
Поскольку это приложение для Mac, я посмотрел на AquaticPrime, но он генерирует относительно большой файл лицензии, а не строку. Я могу работать с этим, если нужно, но как пользователь мне очень нравится удобство лицензионного ключа, который я могу читать и распечатывать.
Я также посмотрел на CocoaFob, который генерирует ключ, но это так долго, что я все равно хотел бы доставить его в виде файла.
Я некоторое время дурачился с OpenSSL , но не мог придумать ничего разумного.
Так ... я что-то упускаю здесь очевидное? Есть ли способ сгенерировать и свести асимметрично зашифрованный хэш к разумному количеству однозначных, читаемых человеком символов?
Я открыт для покупки решения. Но я работаю на разных платформах, поэтому хочу что-то портативное. Все, на что я смотрел, зависит от платформы.
Большое, большое спасибо за решение!
PS - Да, я знаю, что он все еще будет взломан. Я пытаюсь придумать что-то разумное, что, как пользователь, я все равно нахожу дружелюбным.