raises InvalidCiphertextError on bad decrypt
adds some comments