Cometí este mismo error. La contraseña predeterminada tenía una longitud de 50, por lo que utilicé powershell para generar una cadena aleatoria de 50 y reemplacé la antigua SECRET_KEY con ella. Estaba conectado y después de reemplazar la SECRET_KEY mi sesión anterior había sido invalidada.
Con Powershell ( fuente ):
# 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)
Con Bash ( fuente ):
# 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
En este punto, pensé por qué no probar una clave más grande, así que lo intenté con una clave larga de 100 y 1000. Ambos trabajaron. Si entiendo el código fuente , el objeto devuelto por la función de firmante es un hash hmac en base64. RFC 2104 tiene esto que decir para la longitud requerida de una clave secreta HMAC.
Las aplicaciones que usan claves más largas que B bytes primero harán un hash de la clave usando H y luego usarán la cadena de bytes L resultante como la clave real para HMAC.
La clave para HMAC puede ser de cualquier longitud (las claves más largas que B bytes se codifican primero con H). Sin embargo, se desaconseja encarecidamente menos de L bytes ya que disminuiría la seguridad de la función. Las claves de más de L bytes son aceptables, pero la longitud adicional no aumentaría significativamente la fuerza de la función. (Una clave más larga puede ser aconsejable si la aleatoriedad de la clave se considera débil).
Para traducir al habla normal, el tamaño de la clave secreta debe ser del mismo tamaño que la salida. La clave también debe estar en bits. Cada dígito en base64 representa 6 bits. Entonces, si tuviera una contraseña de 50 caracteres, tendría una clave secreta de 50 x 6 = 300 bits. Si está utilizando SHA256, necesitaría una clave de 256 bits ( sha256 utiliza 256 bits por definición ). Por lo tanto, una contraseña larga de 50 debería funcionar a menos que planee usar un algoritmo de hash más grande que SHA256.
Pero dado que los bits adicionales de la clave se están procesando, su tamaño no disminuirá drásticamente el rendimiento. Pero le garantizaría que tiene suficientes bits para funciones hash más grandes. SHA-512 estaría cubierto por una SECRET_KEY de 100 largos ( 50 x 6 = 600 bits> 512 bits ).
data decode will break
y tal vez señalar algún código (en django o proyecto de ejemplo) que se romperá? EDITAR: sigo usando django 1.4, ¿es ese el caso?