1. A method of authenticating and encrypting a client-server communication, comprising: a) generating, by a hardware client device, a first one-time password (OTP 1 ) and an immediately subsequent to said OTP 1 second one-time password (OTP 2 ) from a cryptographic token; b) generating an encryption key (K_ENC) and a MAC (Message Authentication Code) key (K_MAC) based on said OTP 2 ; c) protecting client data by encrypting said client data using said K_ENC and generating a digest of said client data using said K_MAC; d) sending a request message from the hardware client device to a hardware server computer, the request message containing the protected client data, a cryptographic token identifier (TID) and said OTP 1 ; e) validating said OTP 1 at the hardware server computer, and regenerating said OTP 2 at the hardware server computer upon successful validation of said OTP 1 ; f) regenerating said K_ENC and said K_MAC from said OTP 2 at the hardware server computer; g) decrypting and authenticating the protected client data using said K_ENC and said K_MAC respectively at the hardware server computer; h) processing the request message and generating result data; i) encrypting the result data using said K_ENC and creating a digest of said result data using said K_MAC; j) sending the encrypted result data to the hardware client device; and k) decrypting the result data at the hardware client device using said K_ENC and verifying the authenticity of the result data using said K_MAC.