转自百度百科:
目录
1简介
asymmetric encoding algorithm
非
对称加密算法需要两个密钥:
公开密钥(publickey)和私有密钥(privatekey)。
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非
对称加密算法。 非
对称加密算法实现机密信息交换的基本过程是:甲方生成一对
密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。
[1]
非对称
密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称
密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。
2起源
W.Diffie和M.Hellman 1976年在IEEE Trans.on Information刊物上发表了“ New Direction in Cryptography”文章,提出了“非对称
密码体制即
公开密钥密码体制”的概念,开创了密码学研究的新方向
3工作原理
3.A要给B发送信息时,A用B的
公钥加密信息,因为A知道B的公钥。
4.A将这个消息发给B(已经用B的公钥加密消息)。
4主要应用
非对称加密(公钥加密):指加密和解密使用不同
密钥的加密算法,也称为公
私钥加密。假设两个用户要加密交换数据,双方交换
公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个
公钥。由于
公钥是可以公开的,用户只要保管好自己的
私钥即可,因此加密密钥的分发将变得 十分简单。同时,由于每个用户的
私钥是唯一的,其他用户除了可以通过信息发送者的
公钥来验证信息的来源是否真实,还可以确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。
//加密
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] PasswordBytes = encoding.GetBytes(password);//将密码转换为
字节数组RSACryptoServiceProvider crypt=new RSACryptoServiceProvider();//RSA加密算法,非对称PasswordBytes=crypt.Encrypt(password ,false);//加密字节数组,这是加密后的密码值,放入数据库中的表字段中。
string key=crypt.ToXmlString(true);//输出密钥为XML格式的字符串,且包含
私钥,这个字符串要作为数据库表中的一个字段同用户的密码放在一起。
//解密
RSACryptoServiceProvider crypt=new RSACryptoServiceProvider();//已随机生成了一个密钥对
crypt.Clear();//毁掉当前密钥对
crypt.FromXmlString(key)//输入密钥对,key是从数据库表字段中读取的那个XML格式的字符串,即密钥字段PasswordBytes=crypt.Decrypt(password ,false);//解密
字节数组,返回原始密码给用户
还有另外一个方法就是依照上面方法随机生成一个
密钥对(包含
公钥和
私钥),通过ToXmlString(true)方法导出,然后把这个XML字符串格式的密钥放到你的Web程序的Web.config文件的AppSetting节点里面,然后通过FromXmlString(key)方法读入密钥,这样就意味着所有的用户密码都用同一个密钥对加密和解密。
5主要功能
6主要算法
使用最广泛的是RSA算法,Elgamal是另一种常用的非
对称加密算法。
Elgamal由Taher Elgamal于1985年发明,其基础是DiffieˉHellman
密钥交换算法,后者使通信双方能通过公开通信来推导出只有他们知道的秘密密钥值[DiffieˉHellman]。DiffieˉHellman是Whitfield Diffie和Martin Hellman于1976年发明的,被视为第一种 非
对称加密算法,DiffieˉHellman 与RSA的不同之处在于,DiffieˉHellman不是加密算法,它只是生成可用作对称密钥的秘密数值。在DiffieˉHellman
密钥交换过程中,发送方和接收方分别生成一个秘密的
随机数,并根据随机数推导出公开值,然后,双方再交换公开值。DiffieˉHellman算法的基础是具备生成共享
密钥的能力。只要交换了公开值,双方就能使用自己的私有数和对方的公开值来生成对称
密钥,称为共享密钥,对双方来说,该对称密钥是相同的,可以用于使用
对称加密算法加密数据。
与RSA相比,DiffieˉHellman的优势之一是每次交换
密钥时都使用一组新值,而使用RSA算法时,如果攻击者获得了
私钥,那么他不仅能解密之前截获的消息,还能解密之后的所有消息。然而,RSA可以通过认证(如使用X.509
数字证书)来防止
中间人攻击,但Diff ieˉHellman在应对
中间人攻击时非常脆弱。
7算法区别
非对称加密算法与对称加密算法的区别
首先,用于消息解密的密钥值与用于消息加密的密钥值不同;
其次,非
对称加密算法比对称加密算法慢数千倍,但在保护通信安全方面,非对称加密算法却具有对称密码难以企及的优势。
为说明这种优势,使用
对称加密算法的例子来强调:
Alice使用
密钥K加密消息并将其发送给Bob,Bob收到加密的消息后,使用密钥K对其解密以恢复原始消息。这里存在一个问题,即Alice如何将用于加密消息的密钥值发送给 Bob?答案是,Alice发送密钥值给Bob时必须通过独立的安全通信信道(即没人能监听到该信道中的通信)。
这种使用独立安全信道来交换
对称加密算法密钥的需求会带来更多问题:
首先,有独立的安全信道,但是安全信道的带宽有限,不能直接用它发送原始消息。
其次,Alice和Bob不能确定他们的密钥值可以保持多久而不泄露(即不被其他人知道)以及何时交换新的密钥值
当然,这些问题不只Alice会遇到,Bob和其他每个人都会遇到,他们都需要交换密钥并处理这些
密钥管理问题(事实上,X9.17是一项DES密钥管理ANSI标准[ANSIX9.17])。如果Alice要给数百人发送消息,那么事情将更麻烦,她必须使用不同的
密钥值来加密每条消息。例如,要给
200个人发送通知,Alice需要加密消息200次,对每个接收方加密一次消息。显然,在这种情况下,使用
对称加密算法来进行安全通信的开销相当大。