2015-07-10 90 views
0

它是安全的使用會話變量,就是這樣產生:創建一個會話保存在Python

base64.b64encode(os.urandom(256)) 

urandom據說是提供一個良好的隨機性。 base64然後只編碼這個字符串。這個論證是否正確,因此這個方法是安全的?


@Qiau指出,os.urandom取決於OS的實現。在我的情況下(腳本運行在Google App Engine)這個接縫是安全的使用(see Google Groups post)

+0

是的。正確...? – Torxed

+0

保存還是安全?如果安全,請解釋你的安全定義... – Bruce

+0

目前尚不清楚問題是什麼。 – Marcin

回答

1

是的。那是對的。 base64只對字符串進行編碼。

從技術文檔:

urandom的(...)

urandom(n) -> str 

    Return n random bytes suitable for cryptographic use. 

b64encode(S,altchars =無)

Encode a string using Base64. 

它應該是加密足夠不可預測的應用根據documentation:

該函數返回來自OS特定隨機性源的隨機字節。返回的數據對於加密應用程序來說應該是不可預知的,儘管它的確切質量取決於操作系統的實現。在類UNIX系統上,它將查詢/ dev/urandom,並且在Windows上它將使用CryptGenRandom()。如果未找到隨機源,則會引發NotImplementedError。