8.3. Encryption and decryption