diff --git app/drupal/sites/all/modules/contrib/salt/salt.module app/drupal/sites/all/modules/contrib/salt/salt.module
index 9995cd0..207c7d4 100755
--- app/drupal/sites/all/modules/contrib/salt/salt.module
+++ app/drupal/sites/all/modules/contrib/salt/salt.module
@@ -45,7 +45,13 @@ function salt_login_validate($form, &$form_state) {
   $form_state['values']['pass'] = trim($form_state['values']['pass']);
 
   if (strlen($form_state['values']['pass'])) {
-    $salted_pass = $form_state['values']['pass'] . variable_get('salt', '');
+    if (module_exists('salt_user')) {
+      $user_salt = salt_user_get_salt($form_state);
+      $salted_pass = $form_state['values']['pass'] . $user_salt;
+    }
+    else {
+      $salted_pass = $form_state['values']['pass'] . variable_get('salt', '');
+    }
 
     // The user_profile_form is structured differently to the login forms.
     if($form_state['values']['form_id'] == 'user_profile_form') {
diff --git app/drupal/sites/all/modules/contrib/salt/salt_user.info app/drupal/sites/all/modules/contrib/salt/salt_user.info
new file mode 100644
index 0000000..49487ce
--- /dev/null
+++ app/drupal/sites/all/modules/contrib/salt/salt_user.info
@@ -0,0 +1,5 @@
+; $Id: salt.info,v 1.1.4.1 2008/03/29 21:57:44 karthik Exp $
+name = Salt per user
+description = Stores a password salt per-user
+core = 6.x
+dependencies[] = salt
diff --git app/drupal/sites/all/modules/contrib/salt/salt_user.install app/drupal/sites/all/modules/contrib/salt/salt_user.install
new file mode 100644
index 0000000..c56399d
--- /dev/null
+++ app/drupal/sites/all/modules/contrib/salt/salt_user.install
@@ -0,0 +1,52 @@
+<?php
+
+// $Id$
+
+/**
+ * @file
+ * Installation hooks for the Salt per user module.
+ */
+
+/**
+ * Implementation of hook_schema().
+ */
+function salt_user_schema() {
+  $schema['salt_user'] = array(
+    'description' => 'Password salts for {users}',
+    'fields' => array(
+      // Note: Since password storage can occur at the same time as
+      // user creation, uid cannot be used here.
+      'name' => array(
+        'type' => 'varchar',
+        'length' => 60,
+        'not null' => TRUE,
+        'description' => 'The {users}.name that the salt corresponds to.',
+      ),
+      'salt' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+      ),
+    ),
+    'primary key' => array('name'),
+  );
+
+  return $schema;
+}
+
+/**
+ * Implementation of hook_install().
+ */
+function salt_user_install() {
+  drupal_install_schema('salt_user');
+
+  // Set existing user's salts to empty so logins still work.
+  db_query("INSERT INTO {salt_user} (name, salt) SELECT name, '' FROM {users}");
+}
+
+/**
+ * Implementation of hook_uninstall().
+ */
+function salt_user_uninstall() {
+  drupal_uninstall_schema('salt_user');
+}
\ No newline at end of file
diff --git app/drupal/sites/all/modules/contrib/salt/salt_user.module app/drupal/sites/all/modules/contrib/salt/salt_user.module
new file mode 100644
index 0000000..e417c78
--- /dev/null
+++ app/drupal/sites/all/modules/contrib/salt/salt_user.module
@@ -0,0 +1,37 @@
+<?php
+
+// $Id$
+
+/**
+ * @file
+ * Extends the Salt module to store a password salt per-user.
+ */
+
+/**
+ * Generate a salt for the user based on name.
+ */
+function salt_user_make_salt($name) {
+  $salt = drupal_get_token($name);
+  return $salt;
+}
+
+/**
+ * Return a user's salt.
+ */
+function salt_user_get_salt($form_state) {
+  if (!isset($form_state['values']['name'])) {
+    $name = $form_state['values']['_account']->name;
+  }
+  else {
+    $name = $form_state['values']['name'];
+  }
+  $salt = db_result(db_query("SELECT salt FROM {salt_user} WHERE name = '%s'", $name));
+  if ($salt === 0) {
+    $salt = salt_user_make_salt($form_state['values']['name']);
+    $record = new stdClass;
+    $record->name = $form_state['values']['name'];
+    $record->salt = $salt;
+    drupal_write_record('salt_user', $record);
+  }
+  return $salt;
+}
