J'ai fait la même erreur. Le mot de passe par défaut était long de 50, j'ai donc utilisé powershell pour générer une chaîne aléatoire longue de 50 et j'ai remplacé l'ancienne SECRET_KEY par celle-ci. J'étais connecté et après avoir remplacé la 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
A ce moment-là, j'ai pensé pourquoi ne pas essayer une clé plus grande, donc j'ai essayé avec une clé de 100 et 1000. Les deux ont fonctionné. Si je comprends bien le code source l'objet retourné par la fonction de signature est un hash hmac en base64. RFC 2104 a ceci à dire sur la longueur requise d'une clé secrète HMAC.
Les applications qui utilisent des clés d'une longueur plus longues que B octets hacheront d'abord la clé avec H et utiliseront ensuite la chaîne chaîne de L octets résultante comme clé réelle pour HMAC.
La clé pour HMAC peut être de n'importe quelle longueur (les clés plus longues que B octets sont sont d'abord hachées à l'aide de H). Cependant, une longueur inférieure à L octets est fortement déconseillé car cela diminuerait la force de sécurité de la fonction fonction. Les clés plus longues que L octets sont acceptables, mais la longueur supplémentaire n'augmente pas de manière significative la force de la fonction. longueur supplémentaire n'augmenterait pas de manière significative la force de la fonction. (A plus longue peut être conseillée si le caractère aléatoire de la clé est considéré comme faible). considéré comme faible).
Pour traduire en langage normal, la taille de la clé secrète doit être de la même taille que la sortie. La clé doit également être en bits. Chaque chiffre en base64 représente 6 bits. Ainsi, si vous avez un mot de passe de 50 caractères, vous aurez une clé secrète de 50 x 6 = 300 bits. Si vous utilisez SHA256, vous aurez besoin d'une clé de 256 bits ( sha256 utilise 256 bits par définition ). Un mot de passe de 50 caractères devrait donc fonctionner, à moins que vous ne prévoyiez d'utiliser un algorithme de hachage plus grand que SHA256.
Mais comme tous les bits supplémentaires de la clé sont hachés, la taille de la clé ne diminuera pas radicalement 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 clé SECRET_KEY de 100 bits ( 50 x 6 = 600 bits > 512 bits ).