I protect my lisp programs with a key. During the install process, the end user sends me an ‘Install’ code
that’s generated by hardware mapping similar to the Windows Product Activation. The install code is a
136-bit multi-precision integer, which is stored in little endian byte order as a byte array.
The ‘Install’ code can be represented as a sequence of 17 bytes as in
0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX
0x94 0xAA 0x46 0xD6 0x0F 0xBD 0x2C 0xC8
0x00
Anyway with out getting into too much detail, the bit fields are mapped by
Volume serial number system volume
Network adapter MAC
CD-ROM drive hardware identification
Graphics adapter hardware identification
CPU serial number
Hard drive hardware identification
SCSI host adapter hardware identification
IDE controller hardware identification
Processor model
RAM
The cryptographic algorithm use to encrypt the ‘Install’ code, is a proprietary four-round Feistel cipher.
The result is five alpha numeric strings separated by an “-“, as in
FFFFF-GGGGG-HHHHH-JJJJJ-KKKKK
This would be the key that the end user would enter to activate the product.
There are various check points within the program to verify the machine is authorized.
Dan