2013-08-15 23 views
6

os.urandom(n)の出力を端末に印刷するにはどうすればよいですか?端末にpython os.urandomを出力する

私はfabfileでSECRET_KEYを生成しようとし、24バイトを出力します。

私はPythonシェルで両方のバリアントを実装する方法例:

>>> import os 
>>> out = os.urandom(24) 
>>> out 
'oS\xf8\xf4\xe2\xc8\xda\xe3\x7f\xc75*\x83\xb1\x06\x8c\x85\xa4\xa7piE\xd6I' 
>>> print out 
oS�������5*������piE�I 

答えて

7

何がしたいことは16進数の文字列である場合には、binascii.a2b_hex(またはhexlify)を使用します。

>>> out = 'oS\xf8\xf4\xe2\xc8\xda\xe3\x7f\xc75*\x83\xb1\x06\x8c\x85\xa4\xa7piE\xd6I' 
>>> import binascii 
>>> print binascii.hexlify(out) 
6f53f8f4e2c8dae37fc7352a83b1068c85a4a7706945d649 
+0

この16進数の文字列は、バイト版と同じですか? Webappでscretキーとして使用するには? – danbruegge

+0

@haengebruegge、いいえ、それらは等しくありません( 'out!= binascii.hexlify(out)')。私は 'webapp'が何を意味するのか分かりません。 – falsetru

+0

例えばdjangoやフラスコを使ったウェブサイト構築。両方とも秘密鍵が必要です。 https://docs.djangoproject.com/en/dev/ref/settings/#secret-keyまたはhttp://flask.pocoo.org/docs/api/#flask.Flask.secret_key – danbruegge

1

だけで構築されたを使用するには-insの場合、ordで整数値を取得し、16進数に変換することができます。

list_of_hex = [str(hex(ord(z)))[2:] for z in out] 
print " ".join(list_of_hex) 

あなただけの六角リストをしたい場合は、str()[2:]はこの

出力とhexify()バージョンは不要であるが、両方のタイプstrであり、Webアプリケーションのために正常に動作する必要があります。

+1

'str()' 'hex()'関数はすでにstrを返しています... – glglgl

関連する問題