主页 > imtoken钱包下载安卓最新版本 > 求椭圆加密算法程序

求椭圆加密算法程序

. 在非对称加密算法中,最常用的是RSA算法和ECC(椭圆曲线加密)算法

简单的形式

考虑以下等式:

K=kG【其中K,G为Ep(a,b)上的点,k为小于n的整数(n为点G的阶数)】

比特币钱包算法_比特币的加密算法_比特币加密原理

不难发现,给定k和G比特币的加密算法,根据加法规则很容易计算出K; 但给定 K 和 G,求 k 相对困难。

这是椭圆曲线加密算法的问题。 我们称G点为基点k(k)现在我们用椭圆曲线描述一个加密通信的过程:

1. 用户A选择一条椭圆曲线Ep(a,b),取椭圆曲线上的一点作为基点G。

2. 用户A选择私钥k,生成公钥K=kG。

比特币的加密算法_比特币加密原理_比特币钱包算法

3. 用户A发送Ep(a,b)并指向K和G给用户B。

4. 用户B收到信息后,将要传输的明文编码到Ep(a,b)上的一个点M(编码方式有很多种,这里不再赘述),生成一个随机整数r(r5,用户B的计算点C1=M+rK;C2=rG。

6. 用户 B 将 C1 和 C2 发送给用户 A。

7、用户A收到信息后计算C1-kC2,结果为M点。因为

比特币钱包算法_比特币的加密算法_比特币加密原理

C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M

然后对点M进行解码得到明文。

在这种加密通信中,如果有偷窥者H,他只能看到Ep(a,b)、K、G、C1、C2,通过K和G找到k或通过C2和G找到r相对困难. 因此,H无法获得A和B之间传输的明文信息。

在密码学中,为了描述 Fp 上的椭圆曲线,常用六个参数:

比特币的加密算法_比特币加密原理_比特币钱包算法

T=(p,a,b,G,n,h)。

(p,a,b用来确定一条椭圆曲线比特币的加密算法,G是基点,n是点G的阶数,h是椭圆曲线上所有点的个数m除以n的整数部分)

这些参数值的选择直接影响加密的安全性。 参数值一般要求满足以下条件:

1、当然p越大越安全,但是越大计算速度越慢,200位左右可以满足一般的安全要求;

比特币加密原理_比特币的加密算法_比特币钱包算法

2. p≠n×h;

3、pt≠1(模n),1≤t4,4a3+27b2≠0(模p);

5、n为素数;

6、h≤4。