当尝试创建随机的256位数时,输入被截断(有时为252位,其他为254)。 MacOS Sierra 10.12.6
python --version
Python 2.7.13 :: Anaconda 4.4.0 (x86_64)
示例:
>>> private_key = binascii.hexlify(os.urandom(32))
>>> len(bin(int(private_key, 16))[2:])
256
>>> private_key = binascii.hexlify(os.urandom(32))
>>> len(bin(int(private_key, 16))[2:])
252
>>> private_key = binascii.hexlify(os.urandom(32))
>>> len(bin(int(private_key, 16))[2:])
256
答案 0 :(得分:2)
正如@vaulath在评论中所说,bin
截断到最短的表示,没有前导零。因此,如果一个数字在开头有2个零,那么它只有254位。你也可以很容易地看到这一点:
>>> bin(int("001001", 2))[2:]
'1001'
>>> len("001001")
6
>>> len(bin(int("001001", 2))[2:])
4
如果你想要完整的256位,你可以这样:
>>> len(format(0,"0256b"))
256