怎么样为区块链生成公钥和私钥

当前位置:首页 > 币圈百科 > 怎么样为区块链生成公钥和私钥

怎么样为区块链生成公钥和私钥

2022-11-08币圈百科601

公钥加密,或非对称加密系统,是一种使用公钥和私钥对的加密系统。它是加密货币协议的重要组成部分之一。用在几个地方:加密货币钱包的创建,保证加密货币只能由主人使用,交易签名(数字签名),这是加密货币协议的核心组成部分。简而言之,如果你向其他人发送加密货币,你用你的私钥(或用私钥生成的签名密钥)签署交易,用你的公钥验证交易。所以,如果黑客拿到了你的私钥,他们就可以把你的加密货币发给自己。

生成公钥和私钥有两种算法。例如,比特币协议使用椭圆曲线数字签名算法(ECDSA)。在本文中,我将解释rivests-shamir-adleman (RSA)并与ECDSA进行比较。RSA是最早和最广泛使用的公钥密码系统之一。它以其创始人罗恩里维斯特(Ron Rivest)、阿迪沙米尔(AdiShamir)和伦纳德阿德曼(Leonard Adleman)的名字命名,几乎是公钥密码学的代名词。

RSA算法

RSA使用modular -n (mod n)算法,广泛使用算术运算。取n的余数就是x除以n后的余数,比如17剩下5=2。RSA通常由三个主要部分组成(有时添加公钥共享是有意义的):生成公钥和私钥使用生成的公钥加密数据使用生成的私钥解密数据

生成公钥和私钥

为了生成RSA的公钥和私钥,Alice和Bob(这两个虚构的角色已经成为讨论蓑衣网小编2022密码学的行业标准)执行以下步骤:1 .选两个大点的。2.计算n=pq,z=(p-1)(q-1)。3.选择一个小于n的数e,除了1之外没有公因数。z或它们的最大公约数(gcd)等于1,GCD (e,z)等于1。在这种情况下,e和z是相对质数。e将用于加密。4.求一个数D,使ed-1能被z整除,另一种方法是取z=1的余数。d将用于解密。5.Bob或Alice向世界提供的公钥是一对数字(n,e),而私钥必须是秘密的和一对数字(n,d)。

使用生成的公钥加密数据

假设Alice要给Bob发送一条消息,整数M(明文消息)用“bit”模式表示,其中m n .加密的明文消息m c m=e mod n密文c将发送给Bob。请注意,Alice使用Bob的公钥来加密消息。使用生成的私钥解密数据。为了解密收到的密文,鲍勃计算m=c^d模。这需要使用他的私钥(n,d)。RSA的安全性取决于这样一个事实,即没有已知的快速分解(素数因式分解)数字的算法。在这个例子中,公共值n放在P和q中

RSA和ECDSA之间的比较

在ECDA中,私钥是随机生成的整数。在比特币协议中,它是一个256位(32字节)的整数。ECDSA也可以使用相同的算法和不同的椭圆曲线来生成公钥。比特币协议使用Secp256k1。在RSA中,密钥(公钥、私钥和签名)非常大,密钥生成很慢。另一方面,RSA容易实现,但ECDSA很难实现。2010年12月,PlayStation 3因为索尼没有正确实现算法而被黑。这就是为什么建议使用经过测试的库(比如OpenSSL)来生成ECDSA密钥对。蓑衣网小编2022大约一年前,我实现了一个名为eccpem的开源库,并安装了GitHub,它可以生成ECDSA密钥对并存储在。使用OpenSSL库的pem文件。

结论

大多数加密货币协议使用ECDSA(我认为有道理)而不是RSA。至少有两个原因:ECDSA使用的内存比RSA少得多。

蓑衣网小编2022 ECD SA比RSA快。

怎么样为区块链生成公钥和私钥 | 分享给朋友: