Ben de aynı hatayı yaptım. Varsayılan şifre 50 uzun oldu, bu yüzden 50 uzun rastgele bir dize oluşturmak için powershell kullandım ve onunla eski SECRET_KEY değiştirdim. Oturum açtım ve SECRET_KEY değiştirildikten sonra önceki oturumum geçersiz kılındı.
Powershell ( kaynak ) ile:
# 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)
Bash ile ( kaynak ):
# 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
Bu noktada neden daha büyük bir anahtarı denemediğimi düşündüm, bu yüzden 100 ve 1000 uzunluğunda bir anahtarla denedim. İkisi de çalıştı. Ben anlamak kaynak kodu , imzalayan işlevi tarafından döndürülen nesne base64 bir hmac bozulmasıdır. RFC 2104 , bir HMAC gizli anahtarının gerekli uzunluğu için bunu söyleyecektir.
B baytından daha uzun anahtarlar kullanan uygulamalar önce H tuşunu kullanır ve ardından HMAC'ın gerçek anahtarı olarak sonuçtaki L bayt dizesini kullanır.
HMAC anahtarı herhangi bir uzunlukta olabilir (B baytlarından daha uzun anahtarlar önce H kullanılarak karma yapılır). Bununla birlikte, fonksiyonun güvenlik gücünü azaltacağı için L bayttan daha azı kesinlikle önerilmez. L bayttan daha uzun tuşlar kabul edilebilir, ancak ekstra uzunluk işlev gücünü önemli ölçüde artırmaz. (Anahtarın rastgele olması zayıf kabul edilirse daha uzun bir anahtar önerilebilir.)
Normal konuşmaya çevirmek için gizli anahtarın boyutunun çıktıyla aynı boyutta olması gerekir. Anahtarın bit halinde olması gerekir. Base64'teki her bir rakam 6 biti temsil eder. 50 karakterlik bir parolanız varsa, 50 x 6 = 300 bit gizli anahtarınız olacaktır. SHA256 kullanıyorsanız, 256 bitlik bir anahtara ihtiyacınız olacaktır ( sha256 tanım gereği 256 bit kullanır ). SHA256'dan daha büyük bir karma algoritması kullanmayı düşünmüyorsanız, 50 uzunluğunda bir şifre çalışmalıdır.
Ancak, anahtardaki herhangi bir ekstra bit karma olduğundan, boyutu büyük ölçüde performansı düşürmez. Ancak, daha büyük hash fonksiyonları için yeterli bitiniz olduğunu garanti eder. SHA-512, 100 uzunluğunda bir SECRET_KEY ( 50 x 6 = 600 bit> 512 bit ) ile kaplanacaktır .
data decode will break
biraz daha detaylandırabilir ve belki de kırılacak bazı kodlara (django veya örnek projede) dikkat çeker misiniz? EDIT: hala django 1.4 kullanıyor - durum böyle mi?