我想创建128个由随机位组成的密钥。每个密钥的大小必须为128位。当我运行以下代码时,我注意到这个奇怪的输出:
代码:
for i in range(1, 128):
key = random.getrandbits(128)
print("Key:", key, key.bit_length())
输出:
Key: 171015864459493129154336425209795162216 128
Key: 265655405161066827301254922985896430579 128
Key: 149533773555250911787517288984005312306 127
Key: 67337979537475290133339561382641205404 126
Key: 309944504326722665064876901817102187588 128
Key: 5025567194209335595020257770351824725 122
Key: 311246876593534253598386348380900720669 128
etc
为什么有些键的长度小于128?我怎样才能防止这种情况?你知道吗
random
生成一个具有给定数量的随机位的随机python long,正如docs所解释的。你知道吗您使用的方法记录如下:
因此,较短的数字实际上是随机数,带有一些不包括在计数中的前导零。你知道吗
请注意,不鼓励出于安全目的使用
random
。你知道吗作为旁注,
for i in range(1, 128)
只会给你127个键。用for i in range(0, 128)
简单修复(我更愿意添加评论,没有足够的代表这么做)
随机位可以是0或1,因此当左边的位为0(一半时间)时,仍将生成长度为<;128的数字 这很符合逻辑
相关问题 更多 >
编程相关推荐