主页 > 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。