Aside from some applications following the OWASP Password Storage Cheat Sheet:
Django web framework
https://code.djangoproject.com/ticket/15367
http://www.levigross.com/post/1888014894...entication
"Django will use the first password “hasher†that you provide it (at least 1 must be included within your settings.py file.
PASSWORD_HASHERS = (
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher',
'django.contrib.auth.hashers.SHA1PasswordHasher', # Insecure Hashes
'django.contrib.auth.hashers.MD5PasswordHasher', # Insecure Hashes
'django.contrib.auth.hashers.CryptPasswordHasher', # Insecure Hashes
)
"
SQLCipher:
http://sqlcipher.net/design
"When initialized with a passphrase SQLCipher derives the key data using PBKDF2 (OpenSSL’s PKCS5_PBKDF2_HMAC_SHA1). Each database is initialized with a unique random salt in the first 16 bytes of the file. This salt is used for key derivation and it ensures that even if two databases are created using the same password, they will not have the same encryption key. The default configuration uses 4000 iterations for key derivation (this can be changed at runtime using “PRAGMA kdf_iterâ€)."
Django web framework
https://code.djangoproject.com/ticket/15367
http://www.levigross.com/post/1888014894...entication
"Django will use the first password “hasher†that you provide it (at least 1 must be included within your settings.py file.
PASSWORD_HASHERS = (
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher',
'django.contrib.auth.hashers.SHA1PasswordHasher', # Insecure Hashes
'django.contrib.auth.hashers.MD5PasswordHasher', # Insecure Hashes
'django.contrib.auth.hashers.CryptPasswordHasher', # Insecure Hashes
)
"
SQLCipher:
http://sqlcipher.net/design
"When initialized with a passphrase SQLCipher derives the key data using PBKDF2 (OpenSSL’s PKCS5_PBKDF2_HMAC_SHA1). Each database is initialized with a unique random salt in the first 16 bytes of the file. This salt is used for key derivation and it ensures that even if two databases are created using the same password, they will not have the same encryption key. The default configuration uses 4000 iterations for key derivation (this can be changed at runtime using “PRAGMA kdf_iterâ€)."