Eu cometi esse mesmo erro. A senha padrão era 50, então usei o powershell para gerar uma sequência aleatória de 50 e substitui a antiga SECRET_KEY por ela. Eu estava conectado e, após substituir o SECRET_KEY, minha sessão anterior foi invalidada.
Com o Powershell ( fonte ):
# 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)
Com o Bash ( fonte ):
# 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
Nesse ponto, pensei em por que não tentar uma chave maior, então tentei com uma chave longa de 100 e 1000. Ambos funcionaram. Se eu entendo o código fonte , o objeto retornado pela função signatário é um hash hmac em base64. A RFC 2104 tem isso a dizer para o comprimento necessário de uma chave secreta do HMAC.
Os aplicativos que usam chaves com mais de B bytes primeiro hash a chave usando H e, em seguida, usam a sequência de bytes L resultante como a chave real do HMAC.
A chave para o HMAC pode ter qualquer comprimento (chaves maiores que B bytes são primeiro divididas por hash usando H). No entanto, menos de L bytes é fortemente desencorajado, pois diminuiria a força de segurança da função. Chaves maiores que L bytes são aceitáveis, mas o comprimento extra não aumentaria significativamente a força da função. (Uma chave mais longa pode ser aconselhável se a aleatoriedade da chave for considerada fraca.)
Para traduzir para a fala normal, o tamanho da chave secreta precisa ter o mesmo tamanho da saída. A chave também precisa estar em bits. Cada dígito em base64 representa 6 bits. Portanto, se você tivesse uma senha de 50 caracteres, teria uma chave secreta de 50 x 6 = 300 bits. Se você estiver usando o SHA256, precisará de uma chave de 256 bits ( sha256 usa 256 bits por definição ). Portanto, uma senha longa de 50 deve funcionar, a menos que você planeje usar um algoritmo de hash maior que o SHA256.
Mas, como qualquer bit extra na chave está sendo hash, seu tamanho não diminui drasticamente o desempenho. Mas isso garantiria que você tenha bits suficientes para funções hash maiores. O SHA-512 seria coberto por um SECRET_KEY de 100 comprimentos ( 50 x 6 = 600 bits> 512 bits ).
data decode will break
e talvez apontar algum código (no django ou no exemplo de projeto) que será quebrado? EDIT: ainda usando o django 1.4 - é esse o caso?