Discuss / 区块链 / 在比特币中,私钥本质上就是一个256位的随机整数。这里的256位整数的意思是?

在比特币中,私钥本质上就是一个256位的随机整数。这里的256位整数的意思是?

Topic source

在比特币中,私钥本质上就是一个256位的随机整数。这里的256位整数的意思是:这里的位是计算机中的术语位(bit),注意不是我们从小学的数学中的几位数的“位”。在计算机中1位就是1bit,而1字节(byte)等于8位(bit)。1byte=8bit。32byte = 32 x 8 = 256bit(位)。十六进制:0-9加上6个英文字母abcdef刚好就是16个字符,这就是16进制。一个字节(byte)是由八个位(bit)组成的,如果用一个字节来表示一个最大的数字能表示哪个数字呢?那肯定就是11111111(八个二进制的1,在二进制中1就是最大的了,十进制中9就是最大的了)= 256(十进制数字二百五十六)。十六进制FF等于十进制的二百五十六。

那十进制的二百五十六用十六进制来表示就是FF了。所以一个字节能表示的最大十六进制数是FF(256),所以我们就规定俩个十六进制的字符占一个字节的空间。

那私钥本质上就是一个256位的随机整数,那最大的私钥是多少呢?是哪个数字呢?很明显就是二进制的256个1啊:1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

1字节(byte)等于8位(bit),1字节能表示多少个数字呢?答案就是:2的8次方,最多可以表示256个数字。

那么256位的二进制数,能组合出来多少种可能呢?答案就是:2的256次方。最多可以表示115792089237316195423570985008687907853269984665640564039457584007913129639936个数字。你可以数数这个数字是多大,注意115792089237316195423570985008687907853269984665640564039457584007913129639936这个数字是十进制的,你按   “个十百千万” 去数吧。

System.out.println("2的3次方为(2x2x2):->" + new BigInteger("2").pow(3));
System.out.println("2的4次方为(2x2x2x2):->" + new BigInteger("2").pow(4));
System.out.println("2的8次方为(2x2x2x2x2x2x2x2):->" + new BigInteger("2").pow(8));
System.out.println("2的256次方:->" + new BigInteger("2").pow(256));

2的3次方为(2x2x2):->8

2的4次方为(2x2x2x2):->16

2的8次方为(2x2x2x2x2x2x2x2):->256

2的256次方:->115792089237316195423570985008687907853269984665640564039457584007913129639936


  • 1

Reply