为了更好的浏览体验,请不要在本页面禁用 Javascript 🙂
2017-08-14
Python
安全

secrets 模块

secrets模块是在python3.6中加入的全新模块,它提供当前操作系统所提供的最安全的随机访问。
在控制访问,身份认证中比较实用。
secrets.choice(sequence)
随机返回序列中的某个序列,如果序列为空会抛IndexError
>>> secrets.choice([1,2,3,4]) 1
Python
random.choice()类似
secrets.randbelow(n)
返回一个小于n的[0,n)的随机整数
secrets.randbits(k)
返回一个k个比特的整数
secrets.randbelow(2**k)
Python
可以完成同样的功能
tokens
secrets.token_bytes([nbytes=None])
返回n位的随机字节字符串,默认是32位
>>> secrets.token_bytes(8) b'\xba\xd7)}ok\xbe\\'
Python
secrets.token_hex([nbytes=None])
返回一个n位的16进制字符串,默认32位
>>> secrets.token_hex(16) 'd7793b76242678c92bdebd829d94a889'
Python
secrets.token_urlsafe([nbytes=None])
返回一个n位安全的url字符串,默认32位
>>> secrets.token_urlsafe(16) 'LIcGiVXBXwgG0j5ixEZR6A'
Python
其他函数
secrets.compare_digest(a, b)
返回bool值,即比较a和b的值,如果相同则返回真,否则假。
为什么不直接比较ab的值,这么做是出于安全考虑的,有利于防止时序攻击
普通的比较处于效率考虑在ab不同的时候会返回假。这么做对于攻击者来说,可以通过检测函数的执行事件来推测到哪一位出错了,使得攻击的复杂度下降。
安全的做法是在ab某位不同的时候记录下来,然后继续比较,直到全部的位都比较完成再返回结果。
世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活。 —— 罗曼·罗兰巨人三传
Build with gatsby,react,material-ui and Copyright 2019 Mayne Powered by gine-blog