几种主要的公钥加密算法

RSA加密算法

一、RSA算法是什么?

RSA基于数论的欧拉定理,是第一个安全、实用的公钥加密算法,已成为国际标准。

二、秘钥生成步骤

  1. 选取两个安全的大素数p、q(大于1024比特)
  2. 计算n = p * q , φ(n) = (p-1) (q-1),其中φ(n)为n的欧拉函数
  3. 随机选取整数e,满足1 < e < φ(n) , gcd(e,φ(n)) = 1即 e与 φ(n)互素
  4. 计算私钥d,满足d * e = 1(mod φ(n)),即 d == e^(-1)(mod φ(n)),则e和n是公钥,d是私钥

三、重要公式

加密公式:密文 = 明文^E mod N(明文需要分组)

解密公式:明文 = 密文^D mod N


ElGamal加密算法

一、ElGamal算法是什么?

ElGamal是基于有限域上离散对数的公钥加密体制,该体制既可以用来加密也可以用做数字签名

二、秘钥生成步骤

  1. 选取大素数 p ,生成 Zp*的一个生成元 g
  2. 选一个随机数 x,1<x<p-1, y == g^x (mod p), 公钥为(y,g,p) 私钥为 x

三、重要公式

加密步骤:m分为 m1..mi...mt块,分组长度 L<log2 p,ri为第 mi对应的随机整数 ,                                           ci = g^ri (mod p)  ci'  = mi * y^ri (mod p)  c = (c1,c1')(c2,c2')...(ct,ct'),

解密步骤:mi = (ci'/ci^x) (mod p)  m = m1m2...mt         


                                   

椭圆曲线(ECC)加密算法

一、椭圆曲线(ECC)算法是什么?

椭圆曲线(ECC)是基于有限域GF(p)的椭圆曲线的点集构成群,并基于离散对数的公钥加密体制。

二、秘钥生成步骤

  1. 选择一个椭圆曲线 E:y^2 = x^3 + a*x + b( mod p),构造一个椭圆群 Ep(a,b)
  2. 在Ep(a,b)中挑选生成元点 G =(x0,y0),并且 n * G = O,O为无穷远点,n是一个大素数
  3. 选择一个小于 n 的整数 nB作为私钥,然后公钥 PB = nB * G,则 B的公钥为(E,n,G,PB)私钥为 nB

三、重要公式

加密步骤:在椭圆群 Ep(a,b)中选择一个点 Pt=(Xt,Yt), 再选取 k,计算p1 = (x1,y1) = kG,p2 =                   (x2,y2) = kPB ,  C = mXt + Yt ,Cm={kG,Pt+KPB,C}

解密步骤:利用私钥 nB计算 Pt + kPB - nB * (k*G) = pt +k * (nB * G) - nB * (k*G) = Pt                                      m = ( C-Yt ) / Xt


 

                                                      三种算法的比较                                                                                           

RSA、EiGamal、ECC比较
RSAEiGamalECC
数论基础欧拉定理离散对数离散对数
安全性基础

整数分解问

题的困难性

有限域上得离散

对数问题的难解性

有限域上得离散

对数问题的难解性

安全秘钥长度1024位1024位160位
用途加密、数字签名加密、数字签名加密、数字签名
专利

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值