Tôi đã phạm sai lầm tương tự. Mật khẩu mặc định là 50, vì vậy tôi đã sử dụng powershell để tạo một chuỗi ngẫu nhiên dài 50 và thay thế SECRET_KEY cũ bằng nó. Tôi đã đăng nhập và sau khi thay thế SECRET_KEY phiên trước đó của tôi đã bị vô hiệu.
Với Powershell ( nguồn ):
# 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)
Với Bash ( nguồn ):
# 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
Tại thời điểm này tôi đã nghĩ tại sao không thử một phím lớn hơn, vì vậy tôi đã thử nó với một phím dài 100 và 1000. Cả hai đều làm việc. Nếu tôi hiểu mã nguồn , đối tượng được trả về bởi hàm người ký là hàm băm hmac trong base64. RFC 2104 có điều này để nói về độ dài cần thiết của khóa bí mật HMAC.
Các ứng dụng sử dụng khóa dài hơn byte B trước tiên sẽ băm khóa bằng H và sau đó sử dụng chuỗi byte L kết quả làm khóa thực tế cho HMAC.
Khóa cho HMAC có thể có độ dài bất kỳ (các khóa dài hơn byte B được băm đầu tiên bằng H). Tuy nhiên, ít hơn L byte được khuyến khích mạnh mẽ vì nó sẽ làm giảm cường độ bảo mật của chức năng. Các khóa dài hơn L byte được chấp nhận nhưng độ dài thêm sẽ không làm tăng đáng kể cường độ chức năng. (Khóa dài hơn có thể được khuyến khích nếu tính ngẫu nhiên của khóa được coi là yếu.)
Để dịch sang tiếng nói bình thường, kích thước của khóa bí mật cần phải có cùng kích thước với đầu ra. Chìa khóa cũng cần phải được tính bằng bit. Mỗi chữ số trong base64 đại diện cho 6 bit. Vì vậy, nếu bạn có mật khẩu 50 ký tự, bạn sẽ có khóa bí mật 50 x 6 = 300 bit. Nếu bạn đang sử dụng SHA256, thì bạn sẽ cần một khóa 256 bit ( sha256 sử dụng 256 bit theo định nghĩa ). Vì vậy, mật khẩu dài 50 sẽ hoạt động trừ khi bạn có kế hoạch sử dụng thuật toán băm lớn hơn SHA256.
Nhưng vì bất kỳ bit bổ sung nào trong khóa đang được băm, kích thước của nó sẽ không làm giảm đáng kể hiệu năng. Nhưng nó sẽ đảm bảo cho bạn rằng bạn có đủ bit cho các hàm băm lớn hơn. SHA-512 sẽ được bao phủ bởi 100 SECRET_KEY dài ( 50 x 6 = 600 bit> 512 bit ).
data decode will break
và có thể chỉ ra một số mã (trong django hoặc dự án ví dụ) sẽ phá vỡ? EDIT: vẫn đang sử dụng django 1.4 - có phải vậy không?