Это зависит от ваших целей. GUID просто генерировать, но это неприятно, если пользователь вводит его вручную. Это нормально, если активация происходит, скажем, нажатием на URL, указанный в сообщении электронной почты, или если вы можете ожидать, что пользователь скопирует и вставит значение из письма активации.
В других случаях (например, термоусадочное программное обеспечение, в котором код активации физически каким-либо образом напечатан на упаковке), пользователь будет вводить код вручную. В этом случае лучше использовать метод, схожий с тем, что используют Microsoft и Blizzard: сгенерируйте код, состоящий из пяти групп из пяти случайных буквенно-цифровых символов (пропустите гласные, если вы хотите устранить риск того, что код активации будет содержать что-то вроде 4SHIT), и проверьте каждый код, сгенерированный по основному списку на наличие дубликатов. (Хотя я думаю, что шансы даже на 100 000 последовательностей, извлеченных из {1, 2, ... 34 ^ 26 - 1}, содержащих дубликаты, довольно малы. Трудно сказать наверняка, потому что единственный способ, который я знаю для вычисления переполняется в два раза.)