A cryptosystem has a secret based on an order of a group of points on a
Jacobian of a curve. In certain embodiments, the cryptosystem is used to
generate a product identifier corresponding to a particular product. The
product identifier is generated by initially receiving a value associated
with a copy (or copies) of a product. The received value is padded using
a recognizable pattern, and the padded value is converted to a number
represented by a particular number of bits. The number is then converted
to an element of the Jacobian of the curve, and the element is then
raised to a particular power. The result of raising the element to the
particular power is then compressed and output as the product identifier.
Subsequently, the encryption process can be reversed and the decrypted
value used to indicate validity and/or authenticity of the product
identifier.