Хотите ли вы, чтобы это было обратимо - чтобы восстановить идентификаторы из зашифрованного текста? Если это так, то имеет значение, как вы комбинируете строку ключа и ввода.
Обычно вы XOR каждой байтовой пары (работайте с байтовыми массивами, чтобы избежать проблем с Юникодом), циркулируя по ключевой строке, если она короче, чем ввод. Затем можно использовать кодировку Base N (32, 64 и т. Д.) Для генерации строки лицензии.
Обе операции являются обратимыми: вы можете восстановить строки XORed из строки Base N, затем снова XOR с помощью ключа, чтобы получить исходные идентификаторы.
Если вас не волнует изменение операций, подойдет любая свертка ключа и идентификатора. XOR - это самое простое.