Crypto is a function that creates a new instance of the crypto struct.
If the key parameter is nil, it generates a random 16-byte key.
The generated crypto struct contains the key used for encryption and decryption.
Verify verifies the validity of a JSON Web Token (JWT) and returns the ID of the token's subject.
If the token is invalid or expired, an error is returned.