A point of sale terminal including an optical code scanner, said optical code scanner including: an image capture device for capturing an image of an optical code presented to the optical code scanner; a processor (220 or 320) in communication with the image capture device and programmed for receiving the captured image of the optical code from the image capture device; and a weigh scale in communication with the processor (220 or 320), characterised in that the processor (220 or 320) is programmed for: processing the received image to recover data stored in the optical code, wherein the recovered data comprises an encrypted portion and a non-encrypted portion; identifying a cryptographic key associated with the recovered data from the optical code; using the cryptographic key to decrypt the encrypted portion of the recovered data to produce decrypted data; authenticating the recovered data using information from the decrypted data; rejecting the optical code if the recovered data fails authentication; and accepting the optical code data if the recovered data passes authentication, and wherein the encrypted data includes a stored weight for an item, and wherein processing the optical code if the authentication passes includes verifying that a weight determined by the weigh scale for the item matches the stored weight of the item included in the optical code. an image capture device for capturing an image of an optical code presented to the optical code scanner; a processor (220 or 320) in communication with the image capture device and programmed for receiving the captured image of the optical code from the image capture device; and a weigh scale in communication with the processor (220 or 320), characterised in that the processor (220 or 320) is programmed for: processing the received image to recover data stored in the optical code, wherein the recovered data comprises an encrypted portion and a non-encrypted portion; identifying a cryptographic key associated with the recovered data from the optical code; using the cryptographic key to decrypt the encrypted portion of the recovered data to produce decrypted data; authenticating the recovered data using information from the decrypted data; rejecting the optical code if the recovered data fails authentication; and accepting the optical code data if the recovered data passes authentication, and wherein the encrypted data includes a stored weight for an item, and wherein processing the optical code if the authentication passes includes verifying that a weight determined by the weigh scale for the item matches the stored weight of the item included in the optical code. processing the received image to recover data stored in the optical code, wherein the recovered data comprises an encrypted portion and a non-encrypted portion; identifying a cryptographic key associated with the recovered data from the optical code; using the cryptographic key to decrypt the encrypted portion of the recovered data to produce decrypted data; authenticating the recovered data using information from the decrypted data; rejecting the optical code if the recovered data fails authentication; and accepting the optical code data if the recovered data passes authentication, and wherein the encrypted data includes a stored weight for an item, and wherein processing the optical code if the authentication passes includes verifying that a weight determined by the weigh scale for the item matches the stored weight of the item included in the optical code.