- ECC(Elliptic Curves Cryptography,椭圆曲线加密):为公钥密码,对数据进行加密,或阻止别人看到或访问你的数据。
详解椭圆曲线加密,超赞
ECC椭圆曲线加密算法,超赞
所学到的椭圆曲线上的点都是连续的,引入有限域(只有有限个元素组成的域)的概念,将密码学中的椭圆曲线上的点变成离散的点。
如果椭圆曲线上一点P,存在最小的正整数n,使得数乘nP=O∞,则将n称为P的阶
密码学中,描述一条Fp上的椭圆曲线,需要有以下参数(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 (modn),1≤t<20;
4、4a3+27b2≠0 (mod p);
5、n 为素数;
6、h≤4。
- ECDLP(Elliptic Curve Discrete Logarithm Problem,椭圆曲线离散对数问题):是ECC的数学基础。
- ECDSA(Elliptic Curve Signature Algorithm,椭圆曲线签名算法):签名算法,确保数据没有被篡改。
ECDSA详解:相当详细,非常推荐
下面的是我在里面摘的重点,可直接看链接中的文章。
1bit为二进制中的一位,8bit为一字节
使用4个比特,你可以表示0~15,一共16个数字,5个比特,你可以表示32个数字,6个比特,可以 表示64个数字……一个字节,可以表示256个数字,32比特,可以表示4294967296个数字……
ECDSA会总共使用160比特,它可以表示相当大的数。
在SHA1哈希算法当中,它的输出结果总是20字节,即160比特。
创建签名:签名本身是40字节(320bit),由各20字节的两个值来进行表示,第一个值叫作R,第二个叫作S。值对(R,S)放到一起就是你的ECDSA签名。
签名过程中的随机数为20字节,SHA1计算的哈希为20字节。