非对称加密需要公钥和私钥。
公钥和私钥可以互相解密,并且加密过程是不可逆的,即经公钥加密后的文件只有对应私钥可解开,经私钥加密的秘钥也只有对应的公钥才可以解开。
用私钥加密可以证明文件是出于原作者的由于只有拥有私钥的签名者能通过“解密”摘要生成签名,因此具有安全和不可抵赖性。
公钥是公布出来的,可供大家下载。
私钥是个人持有的。
非对称加密流程如下:
A->B发文件,A先用B公布出来的公钥进行加密。此时,加密后的文件只有拥有私钥的人,也就是B可以解开。
C想对一个文件进行数字签名,证明该文件是C自己本人发出的,就用C自己持有的私钥进行加密。大家都可以利用C公布出来的公钥进行解密,用其他秘钥无法解密,此时可以证明这个文件是C本人发布的。由于大家都可以用C公布的文件进行解密,这个文件也就没有了私密性。所以当想向外发送不想被破解的加密文件时,不会用自己的私钥加密,而是用对方公布的公钥进行加密。
延伸:
数字签名:一般按照RSA加密算法(一种根据两个大素数的乘积,难以推断出这两个的算法)工作量太大,发送报文之前都会通过HASH算法进行计算得到一个固定位数的报文摘要。
这个报文摘要在数学上保证,只要改动报文中的任意一位,重新计算出的报文摘要值就会与原来不一样。这样就保证了报文的不可更改性。发送的时候一般将报文摘经过私 钥加密形成的数字签名和报文原文一起发给对方。
接收方收到数字签名后,用同样的HASH算法对原报文计算出报文摘要值,然后与用发送者的公开密钥对数字签名进行解密(原先已经把签名加密了,再解密就能还原)得 到的报文摘要值相比较。如相等则说明报文确实来自所称的发送者。
数字证书:数字证书一般由第三方发布。个人将自己信息和公钥发给第三方,由第三方将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数 字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。参加交易的各方可以根据 权威第三方发布的证书验证对方的身份是否为假冒。一般第三方的数字证书都有短期内的时效性。(我们无法获得与自己交易方的公钥,所以需要第三方平台的认证么?比 如,我们下载到windows中一个软件,但是不知道这个软件的公钥。所以只能通过windows颁发的数据证书来证明此软件是否是假冒、被修改过。或者访问一个网站,需要 浏览器验证数字证书,来判断次钓鱼网站非假冒钓鱼网站。再比如,用U盾时候的银行交易,用户登录网银一般是做的双向认证,CA会给网银服务器颁发一个服务器证书, 客户端首先会验证服务器证书,再用客户端证书与服务器协商一个SSL通讯用的对称密钥,来保证数据数据通讯过程的安全。此处存疑。)
参考:http://baike.baidu.com/link?url=9l69fvf9ez_DMWjC8P9aZfdJEpIg-TH96GwxyE6G41t-Idxrw0QptdaDYWJaGdfsqhYeBe-L0whRTIZl71aykv2bugWS5Hn2w7_xyiZwSNowT4DT9eFmsSC8gFSiJQ4E#1_2
http://baike.baidu.com/link?url=m0SRdJdNZH9euhpTbA9LcXlvX-60EONUzl0jONLlF_U5T6oDgT_2fmHNhASv7e7e9TotcCyFicffznsEPPrrVa#reference-[1]-2120092-wrap