0

私のdjangosettings.pyファイルには次のものがあります。

SECRET_KEY = '1qpps_5yf@e_++wwicusr*8#lm)^m=rjhgk#&qq1w*p*2d3c4z'

この文字列(空ではないと仮定して、任意の文字列にすることができます)をより短い/より長い文字列に変換するための関数が必要です。キーが必要ですが、たとえば長さ=16です。SECRET_KEYが16より長い場合は、それをサブストリング化するのは簡単ですが、それより短い場合は、欠落している値をconstatntcharで「埋める」必要はありません。

したがって、長さが0より大きい文字列を受け取り、長さが16のキーを生成する関数が必要です。さらに簡単に言えば、シードに基づいて16文字の文字列を生成するキージェネレータが必要です(シード= SECRET_KEY)

編集 - - - - - - - - - -

ここで適切な解決策が見つかりました:16文字の英数字の文字列を効率的に生成します

import random
random.seed(settings.SECRET_KEY)
key = ''.join(random.choice('1234567890qwertyuiopasdfghjklzxcvbnm,./;@[]!#$%^&*()_+=-') for i in range(16))

random.seed(settings.SECRET_KEY)djangoアプリ全体のセキュリティが大きくないことを願っています:P

4

1 に答える 1

2

任意の値をハッシュして、そこから 16 バイトを取得できます。

>>> import hashlib
>>> hashlib.md5("123").digest()
' ,\xb9b\xacY\x07[\x96K\x07\x15-#Kp'

文字列で受け入れられる文字については言及していません。これにより、任意のバイト値が得られます。

于 2012-12-15T17:27:15.677 に答える