diff --git a/src/fileio.c b/src/fileio.c
index 4a9a7f1..889e4ff 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1426,8 +1426,7 @@
 		 * Decrypt the read bytes.
 		 */
 		if (cryptkey != NULL && size > 0)
-		    for (p = ptr; p < ptr + size; ++p)
-			ZDECODE(*p);
+		    crypt_decode(ptr, size);
 #endif
 	    }
 	    skip_read = FALSE;
@@ -3004,7 +3003,6 @@
 {
     char_u  *copy;
     char_u  small_buf[100];
-    int	    ztemp, t;
     size_t  i;
 
     if (*buf->b_p_key == NUL)
@@ -3017,11 +3015,7 @@
 	if (copy == NULL)
 	    return 0;
     }
-    for (i = 0; i < len; ++i)
-    {
-	ztemp = ptr[i];
-	copy[i] = ZENCODE(ztemp, t);
-    }
+    crypt_encode(ptr, len, copy);
     i = fwrite(copy, len, (size_t)1, fp);
     if (copy != small_buf)
 	vim_free(copy);
@@ -3039,12 +3033,10 @@
     int	    len;
 {
     char_u  *ptr;
-    char_u  *p;
 
     ptr = read_string(fd, len);
     if (ptr != NULL || *buf->b_p_key != NUL)
-	for (p = ptr; p < ptr + len; ++p)
-	    ZDECODE(*p);
+	crypt_decode(ptr, len);
     return ptr;
 }
 
@@ -5678,15 +5670,7 @@
 
 #ifdef FEAT_CRYPT
     if (flags & FIO_ENCRYPTED)		/* encrypt the data */
-    {
-	int ztemp, t, i;
-
-	for (i = 0; i < len; i++)
-	{
-	    ztemp = buf[i];
-	    buf[i] = ZENCODE(ztemp, t);
-	}
-    }
+	crypt_encode(buf, len, buf);
 #endif
 
     /* Repeat the write(), it may be interrupted by a signal. */
