We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Pgcrypto avast!

Formal Metadata

Title
Pgcrypto avast!
Subtitle
A study in Django's password hashers
Title of Series
Number of Parts
19
Author
License
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
This talk outlines what happened when I needed to migrate hundreds of thousands of end user logins from a legacy application to a Django application for a client (National Geographic). The primary challenge was that each user's password was originally created with the Postgres pgcrypto.crypt() function and only the one-way hash is stored, which is unusable by Django which it's own algorithms for hashing and storing passwords. We can't decrypt the hashed passwords for the migration. We can try to crack them... :‑/ Oh, and this all needs to be completely transparent to the end user. How to migrate these users into Django? We will wander through the wonderful world of pgcrypto, Python password hashing, brute force attacks, and Django's authentication and password hashing internals. We will arrive at a successful solution (or will we?) and the Django package I whipped up and open sourced to handle this.