2015-07-10 93 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。