RSA加密算法
一、RSA算法是什么?
RSA基于数论的欧拉定理,是第一个安全、实用的公钥加密算法,已成为国际标准。
二、秘钥生成步骤
选取两个安全的大素数p、q(大于1024比特)计算n = p * q , φ(n) = (p-1) (q-1),其中φ(n)为n的欧拉函数随机选取整数e,满足1 < e < φ(n) , gcd(e,φ(n)) = 1即 e与 φ(n)互素计算私钥d,满足d * e = 1(mod φ(n)),即 d == e^(-1)(mod φ(n)),则e和n是公钥,d是私钥
三、重要公式
加密公式:密文 = 明文^E mod N(明文需要分组)
解密公式:明文 = 密文^D mod N
ElGamal加密算法
一、ElGamal算法是什么?
ElGamal是基于有限域上离散对数的公钥加密体制,该体制既可以用来加密也可以用做数字签名
二、秘钥生成步骤
选取大素数 p ,生成 Zp*的一个生成元 g选一个随机数 x,1 三、重要公式 加密步骤:m分为 m1..mi...mt块,分组长度 L 解密步骤:mi = (ci'/ci^x) (mod p) m = m1m2...mt 椭圆曲线(ECC)加密算法 一、椭圆曲线(ECC)算法是什么? 椭圆曲线(ECC)是基于有限域GF(p)的椭圆曲线的点集构成群,并基于离散对数的公钥加密体制。 二、秘钥生成步骤 选择一个椭圆曲线 E:y^2 = x^3 + a*x + b( mod p),构造一个椭圆群 Ep(a,b)在Ep(a,b)中挑选生成元点 G =(x0,y0),并且 n * G = O,O为无穷远点,n是一个大素数选择一个小于 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位用途加密、数字签名加密、数字签名加密、数字签名专利是否否