Для лицензионных ключей вы можете использовать шифрование с открытыми и закрытыми ключами.Таким образом, вы можете либо встроить закрытый ключ в программное обеспечение и зашифровать строку, которая будет что-то значить для вашего программного обеспечения (например, какие функции вашего программного обеспечения лицензированы).Или вы можете встроить общедоступный код и дать программному обеспечению строку со специальным значением и подписать ее своим закрытым ключом.Программное обеспечение может затем проверить, действительна ли подпись.
edit: labratmatt был быстрее с ответом открытый-закрытый ключ:)
Очевидно, вторая часть вашей защиты будетнеобходимо разобраться с тем, как трудно разобрать и отладить ваше программное обеспечение (именно так взломщики проверяют ваше программное обеспечение и пытаются обойти защиту с помощью патча или пытаются выяснить, как они могут создать кейген).Эта часть на самом деле намного сложнее и включает в себя такие методы, как шифрование всего исполняемого файла и его обертывание внутри загрузчика, который расшифровывает его во время выполнения.Загрузчик также может использовать различные методы для обнаружения присутствия отладчиков.
edit: Поскольку вы упомянули, что приложение написано на JAVA, этот этап шифрования и упаковки еще более важен, так какJAVA может быть легко декомпилирован в очень удобочитаемую форму.Существуют программы «обфускатора», которые возятся с классами, так что декомпиляторы не могут генерировать читаемый код, но взломать это все же гораздо проще, чем взломать что-то скомпилированное в машинный код.чтобы потратить время на разработку собственной защиты, вы также можете использовать одно из коммерческих программ защиты.Их достаточно много, и они предлагают многочисленные схемы защиты (ключи, временные лицензии, ...)
Многие коммерческие программы используют пакеты, такие как FlexNet, HASP, Wibu-key