摘要:由于密鑰被暴露了,所以必須換新的密鑰,元首這會兒只能走途徑告訴古德里安新的密鑰,這會兒逗逼的事情來了,如何對密鑰進行加密。但是,有一點是值得說明,那就是無論是對稱加密還是非對稱加密,都頂不住用機器是強行暴力猜解私鑰。
懶漢
入門
這兩點就足以說明這篇文章不想要著有什么高端大氣的技術內容,我跟你講,全是水。不可能有什么質數素數、橢圓曲線加密、迪菲-赫爾曼什么的,不可能有的。
首先我不懂,其次,反正你們也不懂。
不過這里還是要先說一點兒,就是很多泥腿子一直拿md5當加密算法來看待,但實際上md5是一種信息摘要算法(其實就是哈希),不是加密算法,因為md5不可逆,但是加解密是一個可逆的過程,所以以后這種低級錯誤還是不要犯的為好。
加密技術一直是技術圈中的一個獨特領域和分支,其一些原理并不是隨隨便便就可以理解的來的。如果沒有良好的數學底子,怕是很難研究下去。但是,作為一篇水文,不研究原理,僅僅來用一用來實踐一把,還是沒什么大問題的。
加密分為兩大類:
對稱加密,常見算法有DES、3DES、AES等等,據說AES是比較屌的最新最常用的算法
非對稱加密,RSA、DSA、ECDH等等
對稱加密用粗話說就是用同一個密鑰對信息加解密。比如元首要操作東線戰場了,給古德里安發了一段電報,大概意思就是“你給我閃開,讓我操作!立馬南下打基輔!”,但是元首又怕朱可夫給看到這段消息,于是元首就用了一個強壯的密鑰123456來加密這段話,然后這段話就變成akjdslfjalwjglajwg了。古德里安收到這坨亂七八糟的玩意后,用123456來解密一下,得到明文“你給我閃開,讓我操作!立馬南下打基輔!”,然而朱可夫由于抓破腦殼也想不到這個超級密鑰123456,所以朱可夫注定一臉懵逼,最終導致基輔60萬蘇軍被奸!但是這里面有一個問題就是元首是如何告訴古德里安私鑰是123456的。
兩個人提前就商量好了,1941年6月22日的前一天偷偷商量好了。。。
兩個人不是提前商量好的,而是古德里安到東線后,元首通過打電話、發電報、QQ、微信。。。 。。。
對于朱可夫來說,如果對方采用了方案1,那么他也沒啥好辦法,只能等潛伏在古德里安身邊的特工臥底返回123456。由于密鑰被暴露了,所以必須換新的密鑰,元首這會兒只能走途徑2告訴古德里安新的密鑰,這會兒逗逼的事情來了,如何對密鑰進行加密。答案是不能,此時問題陷入到欲要加密,必先加密的矛盾中。所以,這個密鑰是注定要通過明文傳輸了,只要是明文傳輸,朱可夫就一定有機會把密鑰搞到手。
非對稱加密就是解決這個難題而生。密鑰換來換去還想不暴露,扯犢子。還是元首和古德里安,這會兒他倆分別生成一對自己的公鑰和私鑰。這里需要強調的是:
公鑰和私鑰是成雙成對生成的,二者之間通過某種神秘的數學原理連接著,具體是啥,我也不知道
公鑰加密的數據,只能通過相應的私鑰解密;私鑰加密的數據,只能通過對應的公鑰解密
公鑰可以頒發給任何人,然而私鑰你自己偷偷摸摸藏到自己褲襠里,別弄丟了
這會兒就簡單了,元首把自己公鑰給古德里安,然后古德里安把自己公鑰給元首,然后都偷偷摸摸保存好自己的私鑰。有一天,元首告訴古德里安“你丫別干了,天天不聽我操作!”,然后用古德里安頒發的公鑰加密好了,然后讓空軍到東線直接仍傳單,扔的滿地都是,古德里安看到后從褲襠里拿出自己的私鑰解密,然后就立馬請假回家休息了,回去前用元首的公鑰加密了如下消息“傻逼,老子還不伺候了!”,然后讓空軍回去撒了柏林一地,元首看到后從褲襠里拿出自己的私鑰一解密:“臥槽。。。”。雖然這雙方都是大大咧咧的發傳單,但是朱可夫只能在旁邊一臉懵逼、生無可戀。因為用于解密的私鑰從來不會在外流通,所以,泄露的可能性是0。
但是,有一點是值得說明,那就是無論是對稱加密還是非對稱加密,都頂不住用機器是強行暴力猜解私鑰。一年不行兩年,兩年不行二十年,二十年不行一百年,總是能猜出來的,這是沒有辦法的一件事情。大家可以搜一搜關于768bit RSA被KO的事件,是吧。
下面我們從gayhub上扒了一個對稱加密的庫下來,嘗試一把aes對稱加密算法,地址如下:
https://github.com/ivantcholakov/gibberish-aes-php
直接git clone到目錄中,然后測試代碼如下:
保存為test.php,運行一下結果如下:
然后我們將上面代碼反復運行100,000次,看看耗費多長時間:
require "GibberishAES.php"; $pass = "123456"; $string = "你好,古德里安,我是希特勒,你趕緊給我滾回來..."; GibberishAES::size(256); $start_time = microtime( true ); for( $i = 1; $i <= 100000; $i++ ) { $encrypted_string = GibberishAES::enc( $string, $pass ); $decrypted_string = GibberishAES::dec( $encrypted_string, $pass ); } $end_time = microtime( true ); echo "一共耗時:".( $end_time - $start_time ).PHP_EOL;保存為test.php,運行一下結果如下:
然后,我們再去gayhub上扒一個非對稱加密的library,比如這個:
https://github.com/vlucas/pik...
我們把代碼扒下來,然后自己寫個demo試一下,如下:
encrypt( $data ); $decrypted = $rsa->decrypt( $encrypted ); echo "加密過后的:".$encrypted.PHP_EOL; echo "解密過后的:".$decrypted.PHP_EOL;保存為test.php運行一下,如下圖所示:
然后我們將上面代碼反復運行100,000次,看看耗費多長時間,這里只貼關鍵部分代碼:
encrypt( $data ); $decrypted = $rsa->decrypt( $encrypted ); } $end = microtime( true ); echo "一共耗時:".( $end - $start ).PHP_EOL;然后,運行結果如下圖所示(實際上由于等待時間太長了,我索性去刷牙洗臉了):
不用驚訝,鈦合金狗眼是否已被亮瞎?瞎也沒用,這是真的,代碼也沒有問題,就是要這么長時間,沒有辦法。
那么問題來了,挖掘機學... ...對稱加密不安全,非對稱加密要人命,有沒有什么好的辦法?
廢話,當然有... ...
最近開了一個微信公眾號,所有文章都先發這里
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31317.html
摘要:實際上這一篇和上一篇均可以看作是關于加解密的懶漢入門篇安全加強篇一的后續,只不過側重點在于安全上。回到上篇結果提到的問題,就是對稱加密的安全性要人命,非對稱加密的性能非常要人命。元首作為高智商罪犯,這種低級錯誤是不可能犯的。 為什么標題總是要帶上API安全關鍵字呢?因為我想我樂意。 實際上這一篇和上一篇均可以看作是《關于PHP加解密的懶漢入門篇(API安全加強篇一)》》)的后續,只不過...
摘要:實際上這一篇和上一篇均可以看作是關于加解密的懶漢入門篇安全加強篇一的后續,只不過側重點在于安全上。回到上篇結果提到的問題,就是對稱加密的安全性要人命,非對稱加密的性能非常要人命。元首作為高智商罪犯,這種低級錯誤是不可能犯的。 為什么標題總是要帶上API安全關鍵字呢?因為我想我樂意。 實際上這一篇和上一篇均可以看作是《關于PHP加解密的懶漢入門篇(API安全加強篇一)》》)的后續,只不過...
摘要:很明顯,非對稱加密的極大的消耗成了一種瓶頸。其中,利用非對稱加密的方案大概就是我前面說的那樣,偽代碼已經展示過了。 其實,前面兩篇翻來覆去只為叨逼叨叨逼叨兩件事情: 對稱加解密,典型算法有AES、DES、3DES等等 非對稱加解密,典型的算法有RSA、DSA、ECDH等等 但是,我知道大家最討厭在看這種文章的時候冒出來的一坨橢圓曲線、素數、質數等等這樣的玩意,反正看也看不懂,理解也...
摘要:這種神奇的算法可以讓你服務器和客戶端在不傳輸該對稱密鑰的情況下就可以通過心有靈犀地方式各自計算出一個對稱密鑰,而且可以一樣,避免了該密鑰在網絡上流通,而且你可以隨意更換,過期時間定為分鐘,可謂是狠毒至極我們引入就是為了解決上面的問題。 首先是前段時間我在公眾號里被人批(dui)評(gang)了,大概意思就是:你別老整那ECDH又是橢圓又是素數啥的,你就說這玩意實際項目中怎么用就完了,我...
摘要:這種神奇的算法可以讓你服務器和客戶端在不傳輸該對稱密鑰的情況下就可以通過心有靈犀地方式各自計算出一個對稱密鑰,而且可以一樣,避免了該密鑰在網絡上流通,而且你可以隨意更換,過期時間定為分鐘,可謂是狠毒至極我們引入就是為了解決上面的問題。 首先是前段時間我在公眾號里被人批(dui)評(gang)了,大概意思就是:你別老整那ECDH又是橢圓又是素數啥的,你就說這玩意實際項目中怎么用就完了,我...
閱讀 2478·2021-09-22 16:05
閱讀 2961·2021-09-10 11:24
閱讀 3632·2019-08-30 12:47
閱讀 2941·2019-08-29 15:42
閱讀 3379·2019-08-29 15:32
閱讀 1944·2019-08-26 11:48
閱讀 1082·2019-08-23 14:40
閱讀 902·2019-08-23 14:33