公钥加密是密钥背后的科学,加密过程基本上使用两个数学上相关但不相同的密钥 - 公钥和私钥,每个密钥执行特定的功能。
重要的是要理解这些数字密钥是由数字钱包创建和管理的。每个钱包都有一个数字(公共)地址,类似于传统纸质支票上的受益人姓名。它由公钥(类似于信用卡号)和私钥(类似于信用卡密码)组成。在传统的非数字世界中,通过在支票上打印受益人姓名或在进行在线购买时输入完整的信用卡号码,您的基础资金的安全性不会受到影响。与公钥加密类似,公共密钥和数字地址是共享和公开的。但是,私钥就像您在银行卡上的PIN一样,所以永远不应该共享。私钥应该像密码一样保密,安全,因为他们授权花钱。
私钥
私钥是随机生成的256位数字。每个位(b inary dig it的缩写)由两个二进制值之一a 0或a 1表示。
以下是作为一系列256位的随机私钥的示例:
1110111100100011010110101010110011111001000011011001111101001010101011011101100011001001001011100100101100100101011000101110000111011001111010111001011111110000110111111001101110100011101101010000100000100101100001110011100111001011000000010011110110110010
要围绕大量可能的256位组合,只需将其视为大约10 77。现在将它与宇宙中恒星的数量进行比较,大约是10 24。非常巨大,对吗?
在数学和计算机科学的世界中,我们将1和0分成4位组,称为半字节。因此,如果我们采用上面的私钥示例并将其格式化为半字节组,它将如下所示:
1110 1111 0010 0011 0101 1010 1010 1100 1111 1001 0000 1101 1001 1111 0100 1010 1010 1101 1101 1000 1100 1001 0010 1110 0100 1011 0010 0101 0110 0010 1110 0001 1101 1001 1110 1011 1001 0111 1111 0000 1101 1111 1001 1011 1010 0011 1011 0101 0000 1000 0010 0101 1000 0111 0011 1001 1100 1011 0000 0001 0011 1101 1011 0010。
由于总共有16种可能的4位组合,因此每半个字节对应于0到15之间的十进制数,如下表所示:
因此,使用上表,我们可以通过将每个半字节映射到相应的十进制数来重写我们的私钥示例。结果如下:
14 15 2 3 5 10 10 15 12 15 9 0 13 9 15 4 10 10 13 13 8 12 9 2 14 4 11 2 5 6 2 14 1 13 9 14 11 9 7 15 0 13 15 9 11 10 3 11 5 0 8 2 5 8 7 3 12 11 0 1 3 13 11 2
在具有2位数字(0或1)的二进制系统旁边,以及由0到9的10位数字组成的十进制系统旁边,还有十六进制系统,由16个字母数字字符组成,从0到F排序。这些是0,1,2,3,4,5,6,7,8,9,A,B,C,D,E和F.
记住所有三个系统,我们原来的256位私钥转换为十六进制数,如下所示:
ef235aacf90d9f4aadd8c92e4b2562e1d9eb97f0df9ba3b508258739cb013db2
当使用所谓的Base58编码系统时,私钥显示为51个字母数字字符。Base58是一种二进制到文本的编码结构,包括英文字母的大写和小写字符,以及数字1到9.为了避免在键入私钥时出现类似字符的混淆和错误,数字零(0),大写字母o,大写字母i(I)和小写字母L(I)都被省略。使用Base58格式编码的私钥始终以5H,5J或5K开头。例如,5HpHagT65TZzG1H3CSu63k8Dbpv8s5ip4nEB3kEsreAvUcVfH34
公钥
公钥是使用称为“椭圆曲线乘法”的数学概念从私钥创建的,它可以从私钥生成唯一的公钥,但更重要的是,不是相反的方式。以这种方式,私钥用于对交易进行数字签名(或认证)以花费多个比特币。通过公开签名和公钥,任何人都可以推断出事务是有效的,而无需实际看到私钥。换句话说,他们可以看到:
该交易确实是由私钥持有者发送的,即比特币的合法所有者,以及
在交易时,所有者拥有交易中出现的比特币数量
如果密钥被压缩,则公钥可以是520位(65字节)长,或264位(33字节)长。
比特币地址
为了获得比特币地址,将公钥输入由美国国家安全局(NSA)设计的称为SHA(安全散列算法)的加密算法。SHA-256算法采用任意大小的输入字符串,并将其转换为256位。在此之后,生成的256位长字符串再次被送入SHA算法,更具体地说,再送到RIPEMD-160,这是另一类加密算法。
最终结果是一个40个字符长的比特币地址:
结论
公钥加密对数字货币支付系统至关重要,因为它用于确认比特币等加密货币的所有权。与加密复杂性一样,CPU功率也在不断提高,以确保数据安全性并通过互联网等不安全的通信媒介进行传输。私钥和公钥由数字钱包管理,对比特币区块链的平稳运行至关重要。