1.公鑰加密和私鑰解密:
公鑰加密和私鑰都是使用證書生成的,并非我們自定義字符串就可以 我們使用的是生成好的公鑰加密和私鑰。
兩者的區(qū)別:
1.公鑰,用于加密數(shù)據(jù). 用于公開, 一般存放在數(shù)據(jù)提供方, 例如iOS客戶端.
2.私鑰,用于解密數(shù)據(jù). 必須保密, 私鑰泄露會(huì)造成安全問題.
公鑰加密和私鑰必須相對(duì)應(yīng)
2.說明:
其實(shí)公鑰和私鑰都可以用來加密或解密---只要能保證用A加密藐鹤,就用B解密就行埃跷。至于A是公鑰還是私鑰炸渡,其實(shí)可以根據(jù)不同的用途而定。例如說检号,如果你想把某個(gè)消息秘密的發(fā)給某人熔号,那你就可以用他的公鑰加密赴肚。因?yàn)橹挥兴浪乃借€素跺,所以這消息也就只有他本人能解開,于是你就達(dá)到了你的目的誉券。但是如果你想發(fā)布一個(gè)公告指厌,需要一個(gè)手段來證明這確實(shí)是你本人發(fā)的,而不是其他人冒名頂替的踊跟。那你可以在你的公告開頭或者結(jié)尾附上一段用你的私鑰加密的內(nèi)容(例如說就是你公告正文的一段話)踩验,那所有其他人都可以用你的公鑰來解密,看看解出來的內(nèi)容是不是相符的商玫。如果是的話箕憾,那就說明這公告確實(shí)是你發(fā)的---因?yàn)橹挥心愕墓€才能解開你的私鑰加密的內(nèi)容,而其他人是拿不到你的私鑰的拳昌。最后再說一下數(shù)字簽名袭异。數(shù)字簽名無非就兩個(gè)目的:證明這消息是你發(fā)的;證明這消息內(nèi)容確實(shí)是完整的---也就是沒有經(jīng)過任何形式的篡改(包括替換炬藤、缺少御铃、新增)碴里。其實(shí),上面關(guān)于“公告”那段內(nèi)容上真,已經(jīng)證明了第一點(diǎn):證明這消息是你發(fā)的咬腋。那么要做到第二點(diǎn),也很簡單睡互,就是把你公告的原文做一次哈希(md5或者sha1都行)帝火,然后用你的私鑰加密這段哈希作為簽名,并一起公布出去湃缎。當(dāng)別人收到你的公告時(shí),他可以用你的公鑰解密你的簽名蠢壹,如果解密成功嗓违,并且解密出來的哈希值確實(shí)和你的公告原文一致,那么他就證明了兩點(diǎn):這消息確實(shí)是你發(fā)的图贸,而且內(nèi)容是完整的蹂季。
例子:
1.小明想秘密給小英發(fā)送消息
2.小英手里有一個(gè)盒子(public key),這個(gè)盒子只有小英手里的鑰匙(private key)才打得開
3.小英把盒子送給小明(分發(fā)公鑰)
4.小明寫好消息放進(jìn)盒子里疏日,鎖上盒子(公鑰加密)
5.小明把盒子寄給小英(密文傳輸)
6.小英用手里的鑰匙打開盒子偿洁,得到小明的消息(私鑰解密)
7.假設(shè)小剛劫持了盒子,因?yàn)闆]有小英的鑰匙沟优,他也打不開