答案:非对称加密算法需要两个密钥:一个为公开密钥(PublicKey),即公钥;一个为私有密钥(PrivateKey),即私钥。两者需要配对使用,如果用公钥对数据进行加密,只有用对应的私钥才能解密,反过来也一样。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
与对称加密相比,非对称加密算法的安全性更好,公钥是公开的,使用者双方不需要交换密钥,只需要保管好自己的私钥就可以。但是算法强度也比较复杂,速度相对较低。
非对称加密中使用的主要算法有:RSA、Elgamal、ESA、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。不同算法的实现机制不同。
其中RSA算法是最流行的非对称加密算法,已被ISO推荐为公钥数据加密标准。RSA算法是基于一个十分简单的数论事实:将两个大素数相乘十分容易,但反过来想要对其乘积进行因式分解却极其困难。
RSA可以通过认证(如使用X.509数字证书)来防止中间人攻击。RSA算法能够抵抗到目前为止已知的所有密码攻击,只有短的RSA钥匙才可能被强力方式破解,目前还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被破解的。要提高保密强度,RSA密钥长度至少为500位,一般推荐使用1024位。RSA算法也是第一个能同时用于加密和数字签名的算法。