Если вы берете хеш чего-либо, это приведет (в идеале) к непредсказуемой строке символов.
Вы могли бы иметь алгоритм, состоящий в том, чтобы взять SHA1 чего-то предсказуемого (например, последовательные числа), объединенного с достаточно длинной солью. Ваши ключи будут надежно защищены, пока ваша соль останется постоянным секретом, а SHA1 никогда не будет взломан.
Например, если вы берете SHA1 из «1» (ваш первый лицензионный ключ) и сверхсекретную соль «stackoverflow8as7f98asf9sa78f7as9f87a7», вы получаете ключ «95d78a6331e01feca457762a092bdd4a77ef1de1». Вы можете добавить это к номерам версий, если хотите.
Если вы хотите авторизоваться онлайн, вам нужно три вещи:
- Чтобы гарантировать, что ответ не может быть подделан
- Чтобы гарантировать, что запрос не может быть подделан
- Чтобы убедиться, что если Интернет недоступен, вы предпримите соответствующие действия
Криптография с открытым ключом может помочь с элементами один и два. Даже у Photoshop CS4 есть проблемы с пунктом 3, это сложный вопрос.