ник: osmor
я не специалист в криптозащите.
Но на мой взгляд тут задачи разные.
при шифровании задача что бы из зашифрованной строки нельзя быпо получить исходную строку не зная ключа
т.е. нужно держать в тайне ключ (алгоритм скрывать совершенно необязательно)
в Вашем случае нужно, что бы нельзя было сгенерить код соответсвующий некоторым параметрам
т.е. вам нужно держать в тайне параметры которые вы используете для получения кода и алгоритм его получения.
Вы сможете скрыть какие именно данные вы используете, но сами-то данные у пользователя есть (номер винта, название фирмы и т.д., он просто может не знать что вы их используете) т.е. основным становится сокрытие алгоритма получения ключа.
Самым просстым мне кажется забить в код пограммы пароль с помощью которого будут шифроваться нужные данные, в качестве ключа присылать некие данные пользователя зашифрованные этим ключем. И при старте программы проверять соответствие зашифрованных строк.