这里是生成密码代码的片段,
关于这个我有两个问题,你能分享一下如何理解吗?
urandom(6),来自urandom的帮助说,返回n个适合加密使用的随机字节,也就是说,它将返回6个字节,是ASCII的6个字节吗?
ord(c),获取上述字节的十进制基数,为什么这里要传输到十进制基数?
帮助urandom

def urandom(n): # real signature unknown; restored from __doc__
    """
    urandom(n) -> str

    Return n random bytes suitable for cryptographic use.
    """
    return ""

Python脚本:
from os import urandom
letters = "ABCDEFGHJKLMNPRSTUVWXYZ"
password = "".join(letters[ord(c) % len(letters)] for c in urandom(6))

最佳答案

urandom将返回一个字节(即0到255之间的值)。示例代码使用该值和模运算符(%)将其转换为0到22之间的值,以便它可以返回23个字母中的一个(IOQ不包括在内,以免与数字混淆)。
请注意,它不是一个完美的平衡算法,因为它更倾向于前3个字母(ABC),因为256不能被23整除,而256 % 233

10-07 20:17