bal*_*iao 2 python random passwords cryptography
这里有一个用于生成密码的代码段,我有2个关于此的问题,请问你能分享一下如何理解?
urandom(6),来自urandom的帮助说,返回适合加密使用的n个随机字节,也就是说,它会返回6个字节,它是6个ASCII吗?
ord(c) ,获取上面的字节的十进制基数,为什么这里转移到十进制基数?
帮助urandom:
def urandom(n): # real signature unknown; restored from __doc__
"""
urandom(n) -> str
Return n random bytes suitable for cryptographic use.
"""
return ""
Run Code Online (Sandbox Code Playgroud)
Python脚本:
from os import urandom
letters = "ABCDEFGHJKLMNPRSTUVWXYZ"
password = "".join(letters[ord(c) % len(letters)] for c in urandom(6))
Run Code Online (Sandbox Code Playgroud)
urandom将返回一个字节(即0到255之间的值).示例代码使用该值并取模运算符(%)将其转换成0和22之间的值,以便它可以返回23个字母(之一I,O和Q被排除不与数字混淆).
请注意,这不是一个完美的平衡算法,因为这将有利于前3个字母(A,B,和C)多,因为256不是整除23 256 % 23是3.
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |