diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h
index 35e3b8b..29d8aae 100644
--- a/src/os/unix/ngx_linux_config.h
+++ b/src/os/unix/ngx_linux_config.h
@@ -48,6 +48,7 @@
 #include <malloc.h>             /* memalign() */
 #include <sys/ioctl.h>
 #include <sys/sysctl.h>
+#include <crypt.h>
 
 
 #include <ngx_auto_config.h>
diff --git a/src/os/unix/ngx_solaris_config.h b/src/os/unix/ngx_solaris_config.h
index d629e04..088fbd0 100644
--- a/src/os/unix/ngx_solaris_config.h
+++ b/src/os/unix/ngx_solaris_config.h
@@ -46,6 +46,7 @@
 #include <sys/systeminfo.h>
 #include <limits.h>             /* IOV_MAX */
 #include <inttypes.h>
+#include <crypt.h>
 
 #include <ngx_auto_config.h>
 
diff --git a/src/os/unix/ngx_user.c b/src/os/unix/ngx_user.c
new file mode 100644
index 0000000..fe2f794
--- /dev/null
+++ b/src/os/unix/ngx_user.c
@@ -0,0 +1,89 @@
+
+/*
+ * Copyright (C) Igor Sysoev
+ */
+
+
+#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+/*
+ * Solaris has thread-safe crypt()
+ * Linux has crypt_r(); "struct crypt_data" is more than 128K
+ * FreeBSD needs the mutex to protect crypt()
+ *
+ * TODO:
+ *     ngx_crypt_init() to init mutex
+ */
+
+
+#if (NGX_CRYPT)
+
+#if (NGX_LINUX)
+
+ngx_int_t
+ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted)
+{
+    char               *value;
+    size_t              len;
+    struct crypt_data   cd;
+
+    value = crypt_r((char *) key, (char *) salt, &cd);
+
+    if (value) {
+        len = ngx_strlen(value);
+
+        *encrypted = ngx_palloc(pool, len);
+        if (*encrypted) {
+            ngx_memcpy(*encrypted, value, len + 1);
+            return NGX_OK;
+        }
+    }
+
+    return NGX_ERROR;
+}
+
+#else
+
+ngx_int_t
+ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted)
+{
+    char       *value;
+    size_t      len;
+    ngx_int_t   rc;
+
+#if (NGX_THREADS && NGX_NONREENTRANT_CRYPT)
+
+    /* crypt() is a time consuming funtion, so we only try to lock */
+
+    if (ngx_mutex_trylock(ngx_crypt_mutex) != NGX_OK) {
+        return NGX_AGAIN;
+    }
+
+#endif
+
+    rc = NGX_ERROR;
+
+    value = crypt((char *) key, (char *) salt);
+
+    if (value) {
+        len = ngx_strlen(value);
+
+        *encrypted = ngx_palloc(pool, len);
+        if (*encrypted) {
+            ngx_memcpy(*encrypted, value, len + 1);
+            rc = NGX_OK;
+        }
+    }
+
+#if (NGX_THREADS && NGX_NONREENTRANT_CRYPT)
+    ngx_mutex_unlock(ngx_crypt_mutex);
+#endif
+
+    return rc;
+}
+
+#endif
+
+#endif /* NGX_CRYPT */
diff --git a/src/os/unix/ngx_user.h b/src/os/unix/ngx_user.h
index f939b84..a24a66b 100644
--- a/src/os/unix/ngx_user.h
+++ b/src/os/unix/ngx_user.h
@@ -16,4 +16,9 @@
 typedef gid_t  ngx_gid_t;
 
 
+ngx_int_t ngx_crypt(ngx_pool_t *pool, u_char *key, u_char *salt,
+    u_char **encrypted);
+
+
+
 #endif /* _NGX_USER_H_INCLUDED_ */
