加密真的能加密嗎?

爲什麼說這個事呢,因爲加密本身就是一個僞命題,下面解釋:        

        我其實思考加密這件事已經思考很久了,其實思考了至少1年了,今天偶然從一本書上看到java安全。

        java有加密類,可以使用java的加密類實現加密,第二個就是自己手寫加密解密。我會用2個維度說加密,1是對於大多數人的,就是對於大衆的就是不會編程的,2是針對程序員就是會編程的。

        1. 對於大衆的呢我舉個加密的例子:

                比如你登錄軟件後讓你輸入用戶名密碼,你輸入就登錄了對吧,這種很簡單,無非就是你的用戶名存數據庫了,直接登錄就行了,程序讀數據庫的數據然後判斷你輸入的和數據庫的一致。那麼問題來了,我如果用程序繞過加解密過程呢,直接返回正常結果呢,好吧,如果是程序員有槓精會說,繞過了拿不到返回值怎麼辦,那我就在驗證密碼的地方直接返回true,如果前端要拿到返回的數據,我在前端繼續寫返回true,這樣是不是密碼形同虛設。好吧我是爲了製造恐慌,製造焦慮,下面提出解決方法,其實業界一直在用,就是下邊說的對於程序員的加密中會說。我會舉幾個例子。

    2. 對於程序員的加密舉例:

            這裏我還是說下怎麼加密,程序員的加密相對高級點,就是代碼加密,我說下邏輯吧,就是代碼可以反編譯,但是呢反編譯後就能看到代碼,然後就能運行代碼改代碼,這裏說下,反編譯後有些代碼可能還是無法編譯的,這裏會涉及到一個知識點,拿java舉例:java的類加載可以用多個加載器,主加載器直接用虛擬機加載進去運行,這裏肯定字節碼不能亂,不然虛擬機都無法識別,然後可以在程序執行到下一步的時候用自己寫的類加載器去加載剩餘的程序自己寫的代碼的字節碼,比如,我生成的字節碼(你可以理解爲文件內容)每一位都左偏移3個位置,這樣在把字節碼寫到另一個文件,然後類加載的時候,再讀出來再右偏移回來就好了。這樣左其實有個問題,如果是程序員人家看到你代碼,你加解密的文件肯定是特殊的人家就挨着找,就是費事一些,還是能給你還原回來源文件的,好吧這就是最開始的加解密,我再說第二種,其實就是認證,給你們拋個磚,https爲什麼用jdk自己生成的證書會提示安全問題,因爲一旦攻入你得電腦,你得所有加解密算法一覽無餘,而且是你服務器本地的肯定能看到,這樣怎麼解決呢?

    3. 終極方案

            遠端存私鑰,本地也就是你的部署程序的服務器存共鑰,這樣無論如何他也無法攻克你的證書私鑰,除非攻克你的遠端私鑰,這也就是爲什麼https的證書只有認可的大機構辦法的人家纔不會提示安全問題的最根本原因,當然如果你自認爲你的服務器足夠牛逼足夠安全也可以。

總結:

        密碼加解密沒有銀彈,存非對稱遠端私鑰,本地公鑰就可以了,至於再細的加密算法那種好,可以自己去看。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章