MySQL django password function

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
DELIMITER //
CREATE FUNCTION django_password(
  pass VARCHAR(32)
) RETURNS VARCHAR(128) 
DETERMINISTIC
BEGIN
	DECLARE salt char(5);
	DECLARE hash VARCHAR(40);
	SET salt = MID(RAND(), 3, 5);
	SET hash = SHA(CONCAT(salt, pass));
	RETURN CONCAT('sha1$', salt, '$', hash);
END//

More like this

  1. Debug middleware for displaying sql queries and template loading info when ?debug=true by SEJeff 2 years, 1 month ago
  2. Old MySQL Password Hash by tback 4 years ago
  3. Serializing booleans correctly when doing dumpdata from a MySQL database using Django 0.96 by chrj 4 years, 9 months ago
  4. Friendly ID by willhardy 4 years, 5 months ago
  5. Use crypt instead of sha1 as password hash algorithm by akaihola 5 years, 9 months ago

Comments

mcosta (on June 1, 2009):

Note the deterministic behaviour from the manual:

A routine that contains the NOW() function (or its synonyms) or RAND() is non-deterministic, but it might still be replication-safe. For NOW(), the binary log includes the timestamp and replicates correctly. RAND() also replicates correctly as long as it is called only a single time during the execution of a routine. (You can consider the routine execution timestamp and random number seed as implicit inputs that are identical on the master and slave.)

#

gamesbook (on October 27, 2010):

How would you make use of this inside of Django (and Django Admin) i.e. where would you add the SQL?

#

(Forgotten your password?)