Как сгенерировать ключ подтверждения, связанный с серийным номером продукта (CPU-ID), для защиты от копирования моего собственного программного обеспечения
Я написал программное обеспечение, в котором я буду читать идентификатор процессора и отображать идентификатор процессора пользователю в виде серийного ключа программного обеспечения, и он будет запрашивать ключ подтверждения для входа в программное обеспечение. Пользователь должен отправить мне этот CPU-ID (серийный ключ), чтобы я сгенерировал ключ подтверждения и отправил его обратно пользователю для входа в систему.
Я использую Linux и C
Вот код, который я использовал, чтобы получить свой CPU-ID
Пример CPU-ID выглядит следующим образом: 0103-06A9-0123-0100-8974-4587
Я буду благодарен, если кто-нибудь поможет мне сгенерировать простой зашифрованный серийный номер и сгенерировать ключ подтверждения. Спасибо.
Примечание: если ключ отображается в читаемом формате, то он будет лучше.. т.е. без специальных символов...
char CPU[30]; //24 Hex digits, PROCESS_SERIAL_NUM
int varEAX, varEBX, varECX, varEDX;
char str[9];
__asm__ __volatile__ ("cpuid" : "=a" (varEAX), "=b" (varEBX), "=c" (varECX), "=d" (varEDX) : "a" (1));
sprintf(str, "%08X", varEAX); //i.e. XXXX-XXXX-xxxx-xxxx-xxxx-xxxx
sprintf(CPU, "%C%C%C%C-%C%C%C%C", str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);
__asm__ __volatile__ ("cpuid" : "=a" (varEAX), "=b" (varEBX), "=c" (varECX), "=d" (varEDX) : "a" (3));
sprintf(str, "%08X", varEDX); //i.e. xxxx-xxxx-XXXX-XXXX-xxxx-xxxx
sprintf(CPU, "%s-%C%C%C%C-%C%C%C%C", CPU, str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);
sprintf(str, "%08X", varECX); //i.e. xxxx-xxxx-xxxx-xxxx-XXXX-XXXX
sprintf(CPU, "%s-%C%C%C%C-%C%C%C%C", CPU, str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);
printf("%s\n", CPU); //compare with: lshw | grep serial: