专业挖矿2000人QQ群:677381516 提供挖矿知识,解决矿机各种问题

如何领略椭圆曲线加密并对其举办编码

当前位置:首页 > 显卡讯息 >
由于大大都人本身大概有一些加密钱币资产,因此您大概传闻过“公钥”和“私钥”这两个词。在区块链网络中,公钥相当于你的地点。假如网络中的其他人想给您发送一些资金,他或她会将其发送到您的公钥。您的私钥可以被视为您的签名——无论何时您想举办资金生意业务,您都需要证明您拥有属于您的公钥的私钥,而无需向网络中的任何人展示它。网络的参加者查抄您的事务,可以证明您利用您的公钥是私钥的所有者,甚至不知道私钥是什么。很酷!但这在更根基的层面上是如何起浸染的呢?我们来深入研究一下这个理论。


valid = ecdsa.verify((r,s),message,pub_key)



如何明确椭圆曲线加密并对其举行编码




在这一部门中,我将扼要先容利用的加密系统背后的魔力。因为它背后的数学是相当巨大的,没有须要领略它的每一个方面。该暗码系统主要应用于区块链网络,它基于椭圆曲线的数学道理。但这条椭圆曲线到底是什么呢?用数学术语暗示,它是满意方程的所有点(x,y)的荟萃
从fastecdsa导入按键,曲线,ecdsa

print(valid)
Y: 0 x26a617f3fc7b1c34bf00b21445201299f9730bc7838994751ead5ddff511c622


在这种环境下,x只是一个任意的自然数。在椭圆曲线暗码学中,人们利用这样一个事实,即仅通过已知点P和r来计较数字x在计较上是不行行的。这凡是被描写为求解离散对数的问题。对付暗码学来说,在椭圆曲线上选择一个符合的点P就会发生一个足够高的随机自然数x,这个数字被称为私钥。用选定的点P和私钥计较曲线上的点R,然后将其界说为公钥。所以公钥和私钥是细密相连的!
我们再次利用CLASS ecdsa并从该类挪用verify()函数,它依赖于三个参数签名、动静和生成动静的谁人参数的公钥。然后,我们打印有效的变量,假如一切正常,应该会获得如下输出: True
打印(priv_key)

(在曲线<P256>上)可以看到,公钥是曲线P256上点的x坐标和y坐标的组合。让我们继承生成和验证一些动静的签名。只需在上面的代码中添加以下几行:
简介
message = ' I am a message '

利用这种要领,可以“签名”任何想要的动静。设M为任意动静,pub为发送方的公钥,priv为发送方的私钥。然后按照M和priv两个参数计较签名: 签名=签名(M,priv)

你看,私钥是一个相当大的数字,有很大都字!我们来看看公钥是什么样子的:
y²= x³+ ax + b

在上式中,函数标记()生成签名。任何吸收到动静M的人都可以验证签名——证明发送方公钥确实也持有私钥: 验证= Ver(签名,M, pub)

P+P+…+P = xP = R.

假如在此曲线上任意一点P = (x,y)并将其加到曲线上另一点Q上,就会获得这个椭圆曲线上的点。可以在下面的图中看到这一点的可视化添加。

pip install fastecdsa
椭圆曲线暗码学
(r, s) = ecdsa.sign(动静,priv_key)
祝贺您!您方才相识了在区块链网络中利用的公钥加密的基本常识。您可以进一步建设您本身的加密钱币。
X: 0 xf8781fc1967637b0fe3e43cbd750051672fad09d0fd8f18d2d49ed1f84ebb5c9
吸收方只需要签名自己、动静和发送方的公钥。这就是椭圆曲线暗码学的根基道理。此刻让我们来编写一些代码!


首先,我们从fastecdsa库导入一些类。CLASS密钥包括一个利用椭圆曲线数学生成密钥对的函数。CLASS曲线包括很多差异的椭圆曲线,您可以从中选择一个来生成键。CLASSecdsa稍后用于生成和验证签名。在第二行中,利用curve P256生成一对公钥和一个私钥。然后,我们打印私钥和公钥。私钥的功效应该是这样的:20053020608649230331723442089943129241597707800309205888496491961204729412316








此刻我们可以继承验证这个签名了。同样,只需添加以下几行代码:
priv_key, pub_key = keys.gen_keypair(curve.P256)
安装完成后,我们可以打开python IDE并开始编码。
编码暗码学

如何明确椭圆曲线加密并对其举行编码

在我上一篇关于如何构建简朴区块链的文章中,我先容了区块链技能的根基常识,并慢慢指导您如安在您的区块链上构建简朴区块。此刻我想向您展示加密钱币和区块链的暗码学部门。因为您大概在上一次利用过,所以我们从一点理论开始,然后直接进入编程。我们开始吧!
在python中,上述要领可以利用fastecdsa库实现。然而,有更多的库编写用于椭圆曲线暗码学。首先,您需要利用“pip安装”呼吁在您的终端。

Such曲线大概会这个样子的:




您也可以选择曲线上的某个点P,并将其加上x倍——您仍然会获得位于椭圆曲线上的一个点。

(5051796304674036363589800321627720065390968951281733524730, 24429916353425477548863857007437472287804761347218109)
我们将一些字符串界说为动静,然后利用导入的CLASS ecdsato生成签名(r,s)。在这之后,我们打印它,应该获得雷同如下的对象:
print((r,s))