After entering a crypt key would need to hit return to continue.
When silencing a message it would still clear a kept message.
diff --git a/src/message.c b/src/message.c
index 3b1b458..c33b173 100644
--- a/src/message.c
+++ b/src/message.c
@@ -1135,8 +1135,11 @@
 {
     int		did_return = FALSE;
 
-    vim_free(keep_msg);
-    keep_msg = NULL;			/* don't display old message now */
+    if (!msg_silent)
+    {
+	vim_free(keep_msg);
+	keep_msg = NULL;		/* don't display old message now */
+    }
 
 #ifdef FEAT_EVAL
     if (need_clr_eos)