A device for providing an authentication code, comprising: a cryptographic processor, cryptographic key and storage means, additional processing means, and interface means for performing steps comprising: receiving, by the device, an explicit command of a holder of the device to generate the authentication code; generating, by the device in response to the explicit command, the authentication code encrypted with a cryptographic key, wherein generating the authentication code comprises: matching authentication information with information stored in a pre-stored template, the authentication information identifying the holder of the device; and responsive to the authentication information matching the information in the pre-stored template, generating a dynamic authentication code associated with the holder of the device; wherein the dynamic authentication code comprises a session identifier counter being incremented when the first authentication code is yielded after power up, a session counter initialized to zero at the first usage after power-up, and being incremented by one each time a new authentication code is yielded, and a timestamp counter initiated to zero when the session identifier is incremented, and being incremented by a fixed frequency, and the dynamic authentication code is variant and unique from other dynamic authentication codes generated by the device; translating the generated authentication code into a plurality of emulated keystrokes; and sending the plurality of emulated keystrokes from the device to an input of a connected terminal. receiving, by the device, an explicit command of a holder of the device to generate the authentication code; generating, by the device in response to the explicit command, the authentication code encrypted with a cryptographic key, wherein generating the authentication code comprises: matching authentication information with information stored in a pre-stored template, the authentication information identifying the holder of the device; and responsive to the authentication information matching the information in the pre-stored template, generating a dynamic authentication code associated with the holder of the device; wherein the dynamic authentication code comprises a session identifier counter being incremented when the first authentication code is yielded after power up, a session counter initialized to zero at the first usage after power-up, and being incremented by one each time a new authentication code is yielded, and a timestamp counter initiated to zero when the session identifier is incremented, and being incremented by a fixed frequency, and the dynamic authentication code is variant and unique from other dynamic authentication codes generated by the device; matching authentication information with information stored in a pre-stored template, the authentication information identifying the holder of the device; and responsive to the authentication information matching the information in the pre-stored template, generating a dynamic authentication code associated with the holder of the device; wherein the dynamic authentication code comprises a session identifier counter being incremented when the first authentication code is yielded after power up, a session counter initialized to zero at the first usage after power-up, and being incremented by one each time a new authentication code is yielded, and a timestamp counter initiated to zero when the session identifier is incremented, and being incremented by a fixed frequency, and the dynamic authentication code is variant and unique from other dynamic authentication codes generated by the device; translating the generated authentication code into a plurality of emulated keystrokes; and sending the plurality of emulated keystrokes from the device to an input of a connected terminal.