Login

MySQL django password function

Author:
mcosta
Posted:
June 1, 2009
Language:
SQL
Version:
Not specified
Score:
2 (after 2 ratings)

This functions encodes a password in the same format as django. You can set the auth_user.password column with the result of this function:

update `auth_user`.`password`
set `password` = django_password('secret')
where id = 1234;
 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. create_template_postgis-ubuntu_lucid by clawlor 13 years, 6 months ago
  2. PostgreSQL fulltext with language translations by diverman 13 years, 7 months ago
  3. Drop all tables in MySQL database by mpasternacki 14 years, 1 month ago
  4. grep and delete sqlite tables by kifkif 14 years, 3 months ago
  5. Substitute hyphens with spaces to enale URLs to reference to multi-word tags by miernik 14 years, 4 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?

#

Please login first before commenting.