utils 模块

此文件是Web2py Web框架的一部分
版权所有:Massimo di Pierro<mdipierro@cs.depaul.edu>

此文件专门包括用于安全性的实用程序。

gluon.utils.AES_dec(cipher, data)[源代码]

用密码解密数据。

gluon.utils.AES_enc(cipher, data)[源代码]

用密码加密数据。

gluon.utils.AES_new(key, IV=None)[源代码]

如果没有指定,则返回AES密码对象和随机IV。

gluon.utils.compare(a, b)[源代码]

比较两个字符串,不易受到定时攻击

gluon.utils.fast_urandom16(urandom=[], locker=<unlocked _thread.RLock object owner=0 count=0>)[源代码]

这比调用os.urandom(16)快4倍,并防止了“打开的文件太多”的问题,同时访问os.urandom()。

gluon.utils.get_callable_argspec(fn)[源代码]
gluon.utils.getipaddrinfo(host)[源代码]

从getaddrinfo中筛选出非IP和错误IP地址

gluon.utils.initialize_urandom()[源代码]

此函数和web2py-uuid的讨论如下: http://groups.google.com/group/web2py-developers/browse_thread/thread/7fd5789a7da3f09

在启动web2py时,通过添加uuid.getnode()+int(time.time()*1e3)来计算标识机器的唯一ID。

这是一个48位的数字。它将数字转换为16个8位标记。它使用该值初始化熵源(“/dev/urandom”)并随机设定种子。

如果不支持os.random(),则返回到使用random并发出警告。

gluon.utils.is_loopback_ip_address(ip=None, addrinfo=None)[源代码]

确定地址是否显示为环回地址。这假定IP有效。

gluon.utils.is_valid_ip_address(address)[源代码]

实例

胜过千言万语:

>>> is_valid_ip_address('127.0')
False
>>> is_valid_ip_address('127.0.0.1')
True
>>> is_valid_ip_address('2001:660::1')
True
gluon.utils.md5_hash(text)[源代码]

生成具有给定文本的MD5哈希。

gluon.utils.pad(s, n=32)[源代码]

填充是否符合PKCS7v1.5 https://www.ietf.org/rfc/rfc2315.txt

gluon.utils.secure_dumps(data, encryption_key, hash_key=None, compression_level=None)[源代码]

转储数据,然后是签名

gluon.utils.secure_dumps_deprecated(data, encryption_key, hash_key=None, compression_level=None)[源代码]

使用签名转储数据(因填充不正确而弃用)

gluon.utils.secure_loads(data, encryption_key, hash_key=None, compression_level=None)[源代码]

加载签名数据转储

gluon.utils.secure_loads_deprecated(data, encryption_key, hash_key=None, compression_level=None)[源代码]

加载签名数据(由于填充不正确,已弃用)

gluon.utils.unlocalised_http_header_date(data)[源代码]

将输入日期时间转换为RFC7231第7.1.1.1节定义的格式

以前,工作日和月份名称使用了%a和%b格式,但这些格式不安全。Uwsgi需要Latin1可编码头,例如在cs_cs区域中,一周中的第四天在Latin1中不可编码,因为它是“t”。

示例输出:Sun,1994年11月6日08:49:37 GMT

gluon.utils.unpad(s, n=32)[源代码]

去除填料

gluon.utils.web2py_uuid(ctokens=(7493952516386875391, 16636974322100725474))[源代码]

此功能来自以下讨论: http://groups.google.com/group/web2py-developers/browse_thread/thread/7fd5789a7da3f09

它的工作方式与uuid.uuid4类似,只是在可能的情况下尝试使用os.urandom(),并使用与此机器唯一关联的标记来异或输出。