Esquema de generación del número de serie del hombre pobre

Me gustaría obtener un esquema / algoritmo simple para generar números de serie basados en una identificación de hardware única (identificación de la CPU o dirección mac de Ethernet o número de serie del disco duro).

Me gustaría que el esquema funcione solo en una dirección, para que la aplicación en la máquina cliente pueda verificar el número de serie pero no generar uno. (Por lo tanto, no sería fácil de descifrar).

Ahora, lo más probable es que la mayoría de ustedes recomiende algún tipo de encriptación de pares de claves públicas / privadas RSA, que puede funcionar de manera confiable: el cliente no tiene una clave RSA privada, por lo que no puede "generar" un número de serie.

Pero el principal problema con la firma RSA es que es demasiado grande: su tamaño de firma es de 128 o 256 bytes, dependiendo del tamaño de la clave RSA (¿Tamaño de firma RSA?)

Quiero que el número de serie sea simple copiar y pegar del correo al formulario de registro, por lo que debe tener un máximo de 64 caracteres, idealmente 32 bytes.

Bien, ahora probablemente dirá que este tipo de protección no es lo suficientemente buena contra el pirateo de la fuerza bruta, donde simplemente prueba todas las combinaciones para determinar el número de serie correcto.

Pero diría que, por lo general, es necesario contratar a un "hacker" costoso o un equipo de hackers para crear una aplicación de craqueo de fuerza bruta.

También creo que es posible cambiar el algoritmo de generación del número de serie para las próximas versiones de la aplicación, o usar el pase de varias vueltas para reducir drásticamente la fuerza bruta.

Como base, preferiría usar C o C ++ simple (no C #), preferiblemente Windows / wincrypt.h o cualquier código fuente de C simple existente (preferiblemente no grandes bibliotecas de terceros).

¿Es posible crear un par de claves pública / privada RSA para que el tamaño de la firma sea de 32 caracteres?

Respuestas a la pregunta(3)

Su respuesta a la pregunta