非对称加密算法

非对称加密算法

非对称加密算法(asymmetric cryptographic algorithm)又名“公开密钥加密算法”,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。

公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;

如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

非对称加密算法实现机密信息交换的基本过程是:

甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;

得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;

甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。

另一方面,

甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;

乙方再用自己的私匙对数据进行验签。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。

非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要

非对称密码体制的特点:

算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

RSA算法:

RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。使用最广泛的是RSA算法

RSA算法的安全性基于数论中大素数分解的困难性,所以,RSA需采用足够大的整数。因子分解越困难,密码就越难以破译,加密强度就越高。

原理是找两个相异的随机大素数p、q,n=pq,t=(p-1)(q-1) ,选择随机数e,满足e和t互质,然后计算d=e-1modt(在数论中,如果x与y的积除以z得到的余数为1,即x*y mod z=1,则称x和y对模z来说互为逆元,这种逆元关系用符号表示即为x=y-1 mod z,所以这里的y-1并不是代表y的倒数)

保留(n,d)作为私钥private key

公开(n,e)作为公钥public key

RSA加密:RSA算法将待加密的字符串s看作是大整数,若s>n,将s表成a进位,a<n,一般取a=2t,然后把s分段,每段表示的整数值都小于n,然后对每段进行加密,运算如下

       假设明文为P,加密后的密文C=Pmod n;

RSA解密:解密过程与加密类似,密文为C,则明文P=Cd mod n;

第三者进行窃听时, 他会得到 公钥public key(n,e),密文C

他如果要解码的话, 必须想办法得到 d

所以, 必须先对 n 作因子分解(当p q 足够大,导致n足够大,因子分解越困难,当超过当前计算机的计算能力后,安全性就很高)

原文地址:https://www.cnblogs.com/xuybin/p/3382072.html