私も同じ間違いをしました。デフォルトのパスワードは50長いため、Powershellを使用して50の長いランダム文字列を生成し、古いSECRET_KEYをそれに置き換えました。私はログインしていて、SECRET_KEYを置き換えた後、以前のセッションが無効になりました。
Powershell(ソース):
# 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の場合(ソース):
# 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
この時点で、もっと大きなキーを試してみませんかと思ったので、100と1000の長いキーで試してみました。どちらもうまくいきました。ソースコードを理解していれば、signer関数によって返されるオブジェクトはbase64のhmacハッシュです。RFC 2104は、HMAC秘密鍵の必要な長さについてこれを言っています。
Bバイトより長いキーを使用するアプリケーションは、最初にHを使用してキーをハッシュし、次に結果のLバイト文字列をHMACへの実際のキーとして使用します。
HMACのキーの長さは任意です(Bバイトより長いキーは、最初にHを使用してハッシュされます)。ただし、関数のセキュリティ強度が低下するため、Lバイト未満にしないことを強くお勧めします。Lバイトより長いキーは受け入れられますが、追加の長さは機能の強度を大幅に増加させません。(キーのランダム性が弱いと考えられる場合は、キーを長くすることをお勧めします。)
通常の発言に変換するには、秘密鍵のサイズが出力と同じサイズである必要があります。キーもビットである必要があります。base64の各桁は6ビットを表します。したがって、50文字のパスワードを持っている場合は、50 x 6 = 300ビットの秘密鍵になります。SHA256を使用している場合は、256ビットの鍵が必要になります(sha256は定義により256ビットを使用します)。したがって、SHA256より大きいハッシュアルゴリズムを使用する予定がない限り、50の長いパスワードが機能するはずです。
ただし、キーの余分なビットはハッシュされるため、そのサイズによってパフォーマンスが大幅に低下することはありません。しかし、それはあなたがより大きなハッシュ関数のために十分なビットを持っていることを保証するでしょう。SHA-512は、100の長いSECRET_KEY(50 x 6 = 600ビット> 512ビット)でカバーされます。
data decode will break
そしておそらく壊れるいくつかのコード(djangoまたはサンプルプロジェクト内)を指摘できますか?編集:まだdjango 1.4を使用しています-そうですか?