如下白話解釋針對小白級別,大牛勿噴。來源:本人博客git
對稱加密算法(Symmetric-key algorithm)和非對稱加密算法(asymmetric key encryption algorithm)只不過就是密碼學(cryptography)中的兩種加密算法罷了,什麼是算法,你就能夠理解成爲是一種規則吧,這種規則能夠將信息從一種形式轉變成另外一種形式,不懂不要緊,繼續往下看。github
首先,讓咱們先從一個情景開始講起,想當初咱們在初中,高中,甚至於大學,每次考試都有人在試圖如何更加隱蔽的做弊!那你們都想了什麼方法呢?好比張三學習比李四好,李四就想在考試的時候讓張三「幫助」一下本身,固然,他們倆不可能像咱們日常對話同樣說,第一題選A,第二題選B等等,爲何?由於監考老師明白他倆在談論什麼,也就是說這種溝通交流方式屬於「明文」,因此李四就想:「我須要發明一種,只有我和張三明白的交流方式」,那李四作了什麼呢?恩,李四去找張三說:「當我連續咳嗽三聲的時候你看我,而後若是我摸了下左耳朵,說明你能夠開始給我傳答案了,若是沒反應,那說明我真的是在咳嗽。。。。」, 而後,怎麼傳答案呢?很簡單,「你摸左耳朵表明A, 摸右耳朵表明B,左手放下表明C,右手放下表明D」,好了,這就是他們的「算法(規則)」,將信息的一種形式(A,B,C,D),這裏咱們稱爲「明文」,轉換成了另外一種形式(摸左耳朵,摸右耳朵,放左手,放右手),這裏稱爲「密文」,通過這種轉換,很顯然監考老師不會明白這些「密文」,這樣,張三和李四就經過「密文」的形式實現了信息的交換。算法
其實,密碼學不就是爲了人們更好的加密傳輸麼?有不少學者,科學家成年累月的工做,爲的就是改進或者發明更好的加密算法,讓這些加密算法加密的文本難以破解,達到數據安全傳輸的目的。segmentfault
OK,迴歸正題,上面這個「做弊」的例子,其實就是一種對稱加密算法!好了,咱們來看一下對稱加密算法的定義(來源:wikipedia):安全
對稱密鑰加密(英語:Symmetric-key algorithm)又稱爲對稱加密、私鑰加密、共享密鑰加密,是密碼學中的一類加密算法。這類算法在加密和解密時使用相同的密鑰,或是使用兩個能夠簡單地相互推算的密鑰。實務上,這組密鑰成爲在兩個或多個成員間的共同祕密,以便維持專屬的通信聯繫。與公開密鑰加密相比,要求雙方取得相同的密鑰是對稱密鑰加密的主要缺點之一
這裏我想說一點的是,wikipedia的把Symmetric-key algorithm中文翻譯是 對稱密鑰加密,我不想把這個key翻譯成密鑰,由於key僅僅是一個「鑰」,這裏翻譯成密鑰會讓你們對後面所說的「公鑰」,「密鑰」,「私鑰」等等的概念弄混,好了,因此我仍是比較喜歡稱之爲「對稱加密算法」,然後面說又稱「私鑰」加密,共享「密鑰」,這裏,「私鑰」就等於「密鑰」,沒有任何區別,英文是「private key」。學習
ok,咱們將定義結合咱們前面的例子對應一下,「這類算法在加密和解密時使用相同的密鑰,或是使用兩個能夠簡單地相互推算的密鑰」,其實在咱們例子中,密鑰就是「將(A,B,C,D)轉換成(摸左耳朵,摸右耳朵,放左手,放右手)」這麼一個規則。「實務上,這組密鑰成爲在兩個或多個成員間的共同祕密,以便維持專屬的通信聯繫。」 這句話很好理解了吧,密鑰是張三和李四間共同的祕密!只有他倆事先知道。加密
因此,爲何叫對稱加密呢,你能夠這麼理解,一方經過密鑰將信息加密後,把密文傳給另外一方,另外一方經過這個相同的密鑰將密文解密,轉換成能夠理解的明文。他們之間的關係以下:翻譯
明文 <-> 密鑰 <-> 密文
這樣看,是否是感受對稱比較好理解了。ok,那麼咱們如今有哪些現成的對稱加密算法能夠用麼?固然有:code
常見的對稱加密算法有DES、3DES、AES、Blowfish、IDEA、RC五、RC6。
想深刻了解的同窗,能夠自行查閱資料了。ip
咱們再來講說非對稱加密,非對稱加密是一種比對稱加密更加優秀的加密算法,固然算法有利有弊,對稱加密速度快可是安全性相對於非對稱加密來講低,爲何呢,你想啊,要想使用對稱加密,那麼分享信息的各個個體之間都須要分享這個密鑰,好比大家1000我的之間都使用同一個密鑰進行密文傳輸,只要其中一我的密鑰被盜竊了,那麼總體加密的信息將都被破解了。好了,那麼咱們開始說說非對稱加密。
就從上面提到的這個對稱加密的缺點開始,怎麼作到即時一我的的密鑰被盜竊了,最起碼保證你給其餘人發送密文不被破解。因而,人們就想出了這麼個辦法,首先,咱們中止分享共同的密鑰,由於上面的bug就是來源於共享一個密鑰,那麼怎麼辦呢?每一個人生成一個「私鑰-公鑰」對,這個私鑰須要每一個人自行進行保護!公鑰能夠隨便分享,後面詳細說,同時,生成的這個「私鑰-公鑰」對還有個強大的功能就是,使用私鑰加密的信息,只能由該私鑰對應的公鑰才能解密,使用公鑰加密的信息,只能由該公鑰對應的私鑰才能解密!
好了,好比說張三生成了他本身的一個「私鑰-公鑰」對,叫作「張三私鑰-張三公鑰」,李四生成了他本身的一個「私鑰-公鑰」對,叫作「李四私鑰-李四公鑰」,以前咱們說過私鑰要每一個個體本身進行保存,公鑰能夠隨便分享,目的是爲何呢?是爲了加密信息!
好比,李四想給張三發送密文。
因而李四開始給張三發QQ
李四: 「hi哥們,我想給你發個密文,把你的公鑰給我發過來用用。」 張三: 「沒問題的,這是個人公鑰: d#8yHE8eU#hb*!neb,用這個公鑰加密你的信息後給我發過來吧」 李四: 「這是我想對你說的話: *&#@uehuu(**#eehu&$##bfeu&&」
恩?你是否是有點疑問呢?咳咳,李四這是做死的節奏?爲何公開問公鑰?不怕被網警查水錶?哈哈,非對稱解密算法的威力就在這裏!無所謂!隨便誰截取!咱們上面說了,公鑰能夠隨意分發,因此即便別人截取了,也只是知道該公鑰而已,可是要是想解密使用該公鑰加密的密文!只有一我的能夠辦獲得!就是張三! 爲何?李四使用張三的公鑰加密的信息,只有張三的公鑰所對應的私鑰,這裏就是「張三私鑰」,該私鑰才能夠解密!因此,沒有張三私鑰的第三方即時截取了這些密文,也破解不了!或者更嚴格的說在有限時間內好比說幾千年內是暴力破解不出的!
懂了吧?因此網警們哭了,本覺得想監視他們的對話,惋惜一無所得!
咱們來看看非對稱加密的官方定義:
公開密鑰加密(英語:public-key cryptography,又譯爲公開密鑰加密),也稱爲非對稱加密(asymmetric cryptography),一種密碼學算法類型,在這種密碼學方法中,須要一對密鑰(其實這裏密鑰說法很差,就是「鑰」),一個是私人密鑰,另外一個則是公開密鑰。這兩個密鑰是數學相關,用某用戶密鑰加密後所得的信息,只能用該用戶的解密密鑰才能解密。若是知道了其中一個,並不能計算出另一個。所以若是公開了一對密鑰中的一個,並不會危害到另一個的祕密性質。稱公開的密鑰爲公鑰;不公開的密鑰爲私鑰。
hmm。。這個定義有點繞,不過就是說,要想使用非對稱加密算法,首先要有一對key,一個被稱爲private key私鑰,一個成爲public key公鑰,而後能夠把你的public key分發給想給你傳密文的用戶,而後用戶使用該public key加密過得密文,只有使用你的private key才能解密,也就是說,只要你本身保存好你的private key,就能確保,別人想給你發的密文不被破解,因此你不用擔憂別人的密鑰被盜,不要緊。
正由於,這種加密是單向的,因此被稱爲非對稱加密算法。
這種加密算法應用很是普遍,SSH, HTTPS, TLS,電子證書,電子簽名,電子身份證等等。
這篇文章先寫到這裏,接下來我將像你們挨個介紹這些加密算法的應用,不過我在這裏先埋個伏筆,上面我提到的李四和張三發qq,即時使用非對稱加密算法,你們有沒有發現仍然有哪些隱患呢?
給點提示,好比說,某個網警想知道到底李四要給張三發什麼信息?網警想破解李四的密文,那麼網警有什麼辦法能夠得到李四要發的信息呢?很顯然得到密文直接暴力破解是不可能的!
小提示,網警能夠冒充張三!!!!發送給李四「網警的公鑰」,而不是「張三的公鑰」,那麼當李四收到該公鑰的時候,就不假思索的使用該公鑰加密了他的信息,而後堅決果斷的將加密的密文發了過去,而後網警得意的笑了。
因此,問題在哪呢?這就是數字簽名和數字證書的來歷!咱們下回接着白話。
白話解釋 電子簽名,電子證書,根證書,HTTPS,PKI 究竟是什麼
更多內容歡迎訪問:做者博客
讀完本文章,你能夠繼續看以下文章: