Я реализую небольшое приложение на языке C, которое позже я хотел бы продавать как условно-бесплатное ПО по разумной цене. Он начнется с 30-дневной пробной версии, и я уже совершенно уверен в том, как ее реализовать.
Проблема, однако, в том, что я не совсем уверен, как реализовать проверку ключа продукта. Я имею в виду, что покупатель может зарегистрироваться на моей веб-странице (после некоторого опробования продукта), заплатить за продукт и получить ключ продукта в форме aaaaa-bbbbb-ccccc-ddddd-eeeee через e -mail (или, возможно, доступен через его профиль на моем сайте). Пока проблем нет. Затем он / она опускает ключ в соответствующие ключевые поля в моем приложении, и бум приложение регистрируется.
Насколько я могу судить, для этого люди рекомендуют либо AES, либо RSA. Честно говоря, я учился в колледже по другому направлению (не по криптографии), и один курс по криптографии я проходил некоторое время назад. Но насколько я помню, AES - это симметричный алгоритм шифрования, что означает, что у меня будет только один ключ для шифрования и дешифрования, верно? Как я мог затем сгенерировать тысячи ключей продукта и по-прежнему проверять их в своем приложении (которое, кстати, не требует доступа в Интернет ... так что не нужно проверять сервер)?
Так что я думаю, что RSA будет лучшим вариантом? Но разве RSA не создает довольно длинные ключи (по крайней мере, длиннее требуемых 25 символов, указанных выше)?
В другом потоке я прочитал, что некоторые продукты даже не используют шифрование для генерации / проверки ключа продукта, а вместо этого просто используют некоторые проверки, такие как «добавьте символ 2. и 17., и это должно быть в сумме до x».
Какой самый быстрый, простой и безопасный способ добраться сюда? :-) Примеры кода были бы сахаром!
С уважением,
Себастьян
PS: О ... и, пожалуйста, не говорите мне, как мой ключ может и будет взломан в какой-то момент ... Я знаю об этом, и в первую очередь поэтому я не хочу проводить много времени с эта проблема, но в то же время не делает ее слишком легкой для случайного взломщика.