diff --git a/src/server/ChangeLog b/src/server/ChangeLog
index 543efed2243e4b67f8f3a96b23ab90a77aee4d80..6af74070e7e74dec44e597bcd1a76d333255aa4b 100644
--- a/src/server/ChangeLog
+++ b/src/server/ChangeLog
@@ -1,3 +1,12 @@
+Thu Sep 12 01:00:13 1991  Per Cederqvist  (ceder at lysator)
+
+	* ramkomd.c (main): Anropa srand() om ENCRYPT_PASSWORDS {r satt,
+	  s} att vi f}r ett slumpm{ssigt fr|.
+
+	* person.c (do_set_passwd, chk_passwd) Kryptera l|senord om
+	  ENCRYPT_PASSWORDS {r satt. (Inkompatibelt med gamla
+	  databasformatet).
+
 Tue Sep 10 21:58:18 1991  Per Cederqvist  (ceder at robert)
 
 	* conference.c (delete_conf): Om det {r en brevl}da som tas bort
diff --git a/src/server/person.c b/src/server/person.c
index 462c87d1ffa04bb1463612c24f84f4b012818363..a90fad78bbb20be7ab0f0b358a838ee2cb5488ed 100644
--- a/src/server/person.c
+++ b/src/server/person.c
@@ -4,14 +4,16 @@
  * All atomic calls that deals with persons.
  */
 
-static char *rcsid = "$Id: person.c,v 0.7 1991/09/05 08:32:46 ceder Exp $";
+static char *rcsid = "$Id: person.c,v 0.8 1991/09/11 23:03:48 ceder Exp $";
 
+#include <m-config.h>
 #include <time.h>
 #include <string.h>
 #include <stdlib.h>
 #include "lyskomd.h"
 #include <kom-types.h>
 #include <services.h>
+#include <misc.h>
 #include "manipulate.h"
 #include <kom-errno.h>
 #include <server/smalloc.h>
@@ -37,12 +39,32 @@ static Success
 do_set_passwd( Password        pwd,
 	       const String   new_pwd)
 {
+#ifdef ENCRYPT_PASSWORDS
+    char salt[3];
+    static char crypt_seed[] = ("abcdefghijklmnopqrstuvwxyz"
+				"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./");
+
     if ( !legal_passwd(new_pwd) )
 	return FAILURE;
-	
-    *pwd++ = new_pwd.len;		/*** Maybe too easy crypt... */
+
+    salt[0] = crypt_seed [rand() % sizeof (crypt_seed)];
+    salt[1] = crypt_seed [rand() % sizeof (crypt_seed)];
+    salt[2] = '\0';
+    
+    strcpy((char *)pwd, (const char *)crypt((char *)new_pwd.string, salt));
+
+#else
+
+    /* Compatibility mode... */
+    if ( !legal_passwd(new_pwd) )
+	return FAILURE;
+
+    *pwd++ = new_pwd.len;		/* Indeed too easy crypt... */
     strncpy(pwd, (const char *)new_pwd.string,
 	    min( PASSWD_LEN-1, new_pwd.len ));
+
+#endif
+
     return OK;
 }
 
@@ -281,19 +303,32 @@ do_delete_pers (Pers_no pers_no)
  * Check a password
  */
 Success
-chk_passwd( Password   pwd,
-	    const String     s )
+chk_passwd (Password      pwd,
+	    const String  try)
 {
+#ifdef ENCRYPT_PASSWORDS
+
+    if (strcmp ((const char *)pwd,
+		(const char *)crypt((const char *)&try.string[2],
+				    (const char *)try.string))) 
+	return FAILURE;
+    else
+	return OK;
+
+#else
+
     int i;
     
-    if ( s.len != *pwd )
+    if ( try.len != *pwd )
 	return FAILURE;
 
-    for ( i = 0; i < s.len; i++ )
-	if ( pwd[ i + 1 ] != s.string[ i ] )
+    for ( i = 0; i < try.len; i++ )
+	if ( pwd[ i + 1 ] != try.string[ i ] )
 	    return FAILURE;
 
     return OK;
+
+#endif
 }
 
 
diff --git a/src/server/ramkomd.c b/src/server/ramkomd.c
index d96953525c6e49ecda729b17fff1ebe9dc4754fc..1e75eff37fd691729fe7467ac9bde4bb80ed7798 100644
--- a/src/server/ramkomd.c
+++ b/src/server/ramkomd.c
@@ -7,7 +7,7 @@
  * It has grown! /ceder
  */
 
-static char *rcsid = "$Id: ramkomd.c,v 0.18 1991/09/04 15:39:45 ceder Exp $";
+static char *rcsid = "$Id: ramkomd.c,v 0.19 1991/09/11 23:03:46 ceder Exp $";
 
 
 #include <m-config.h>
@@ -228,6 +228,10 @@ main (int    argc,
     /* If we don't have getdtablesize MAX_NO_OF_CONNECTIONS is
        set at compile time. */
 
+#ifdef ENCRYPT_PASSWORDS
+    srand(time(NULL) + getpid());
+#endif
+    
     s_set_storage_management(string_malloc, string_realloc, string_free);
 
 
diff --git a/src/server/version.incl b/src/server/version.incl
index 2f48cf534e6383f6f3c81558a7eb16fb9d7fc12a..911513a6822adf6a6e685af29881ab85318a3a16 100644
--- a/src/server/version.incl
+++ b/src/server/version.incl
@@ -1,2 +1,2 @@
-/* $Id: version.incl,v 0.15 1991/09/10 21:44:41 ceder Exp $ */
-3109
+/* $Id: version.incl,v 0.16 1991/09/11 23:03:44 ceder Exp $ */
+3200