I've struggled with this for a while. Here's my scenario. I am trying to generate 25-character software product keys (like Microsoft style FFFFF-EEEEE-DDDDD-BBBBB-77777). I have succesfully generated by nonce (raw product key) - according to this article, my final product key (before encoding in base 24 format) should be exactly 15 bytes (4 bytes for my nonce and 11 bytes for my digital signature).
Now the problem is how do I generate an 11-byte signature? I've tried using the currently shortest signature cryptography (ECC - using a secp128r2 curve - which gives me a 128-bit private key). After signing, the size of my signature is 80 bytes (as printed by the Java statement
System.out.println("length: "+signedProductKeyBytes.length);
My questions are:
What exactly is the relationship between an EC key size (in bits) and the length of the resulting EC signature (in bytes)?
For instance an EC key of 128-bits is supposed to produce a signature size of how many bytes?
How do I generate an 11-byte signature (by the way, I'm sure there was no EC keys in the days of Windows XP - so MS wasnt using EC - is there a better way? Say use an RSA 32-bit key or something?)?
Also does the size of the string (in my case it's a stringof just 9 chars e.g "123456789" being signed play a part in the final length of signature?
Have struggled with this for a while, searched everywhere online - answers with a lot of technical talks - but nothing specific to answering my questions (the nearest I got was this article for RSA keys)
I hope I get some quick response - my project is late by weeks already. Thanks guys!