J'ai fait la même erreur. Le mot de passe par défaut était long de 50 donc j'ai utilisé PowerShell pour générer une longue chaîne aléatoire de 50 et j'ai remplacé l'ancien SECRET_KEY avec. J'étais connecté et après avoir remplacé SECRET_KEY, ma session précédente avait été invalidée.
Avec Powershell ( source ):
# Load the .net System.Web namespace which has the GeneratePassword function
[Reflection.Assembly]::LoadWithPartialName("System.Web")
# GeneratePassword(int length, int numberOfNonAlphanumericCharacters)
[System.Web.Security.Membership]::GeneratePassword(50,5)
Avec Bash ( source ):
# tr includes ABCabc123 and the characters from OWASP's "Password special characters list"
cat /dev/urandom | tr -dc 'A-Za-z0-9!"#$%&\''()*+,-./:;<=>?@[\]^_`{|}~' | head -c 100 ; echo
À ce stade, j'ai pensé pourquoi ne pas essayer une clé plus grande, alors je l'ai essayée avec une clé longue de 100 et 1000. Les deux ont fonctionné. Si je comprends le code source , l'objet renvoyé par la fonction de signataire est un hachage hmac en base64. RFC 2104 a ceci à dire pour la longueur requise d'une clé secrète HMAC.
Les applications qui utilisent des clés plus longues que B octets hachent d'abord la clé à l'aide de H, puis utilisent la chaîne d'octets L résultante comme clé réelle de HMAC.
La clé pour HMAC peut être de n'importe quelle longueur (les clés plus longues que B octets sont d'abord hachées à l'aide de H). Cependant, moins de L octets est fortement déconseillé car cela diminuerait la sécurité de la fonction. Les clés plus longues que L octets sont acceptables mais la longueur supplémentaire n'augmenterait pas de manière significative la force de la fonction. (Une clé plus longue peut être recommandée si le caractère aléatoire de la clé est considéré comme faible.)
Pour traduire en langage normal, la taille de la clé secrète doit être la même que celle de la sortie. La clé doit également être en bits. Chaque chiffre en base64 représente 6 bits. Donc, si vous aviez un mot de passe de 50 caractères, vous auriez une clé secrète 50 x 6 = 300 bits. Si vous utilisez SHA256, vous aurez alors besoin d'une clé de 256 bits ( sha256 utilise 256 bits par définition ). Par conséquent, un mot de passe long de 50 devrait fonctionner, sauf si vous prévoyez d'utiliser un algorithme de hachage plus grand que SHA256.
Mais comme tous les bits supplémentaires de la clé sont hachés, leur taille ne diminuera pas considérablement les performances. Mais cela vous garantirait que vous avez suffisamment de bits pour des fonctions de hachage plus importantes. SHA-512 serait couvert par une SECRET_KEY longue de 100 ( 50 x 6 = 600 bits> 512 bits ).
data decode will break
et peut-être signaler du code (dans django ou un exemple de projet) qui se brisera? EDIT: utilise toujours django 1.4 - est-ce le cas?