豬都能理解的對稱加密和非對稱加密

轉載學習,如果類型是轉載還要有授權,好麻煩。我只是想分享下。。。。。。。。。所以設置爲原創

非對稱加密:

作者:永安在線反欺詐
鏈接:https://www.zhihu.com/question/33645891/answer/192604856
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
 

看一個小時候經常在《趣味數學》這類書裏的一個數學小魔術:

讓對方任意想一個3位數,並把這個數和91相乘,然後告訴我積的最後三位數,我就可以猜出對方想的是什麼數字啦!比如對方想的是123,那麼對方就計算出123 * 91等於11193,並把結果的末三位193告訴我。看起來,這麼做似乎損失了不少信息,讓我沒法反推出原來的數。不過,我仍然有辦法:只需要把對方告訴我的結果再乘以11,乘積的末三位就是對方剛開始想的數了。可以驗證一下,193 * 11 = 2123,末三位正是對方所想的祕密數字!

其實道理很簡單,91乘以11等於1001,而任何一個三位數乘以1001後,末三位顯然都不變(例如123乘以1001就等於123123)。

知道原理後,我們可以構造一個定義域和值域更大的加密解密系統。比方說,任意一個數乘以400000001後,末8位都不變,而400000001 = 19801 * 20201,於是你來乘以19801,我來乘以20201,又一個加密解密不對稱的系統就構造好了。

甚至可以構造得更大一些:4000000000000000000000000000001 = 1199481995446957 * 3334772856269093,這樣我們就成功構造了一個30位的加密系統。

這是一件非常coooooooool的事情,任何人都可以按照我公佈的方法加密一個數,但是隻有我才知道怎麼把所得的密文變回去。

其安全性就建立在算乘積非常容易,但是要把4000000000000000000000000000001分解成後面兩個數相乘,在沒有計算機的時代幾乎不可能成功!但如果僅僅按照上面的思路,如果對方知道原理,知道我要構造出帶很多0的數,根據19801和8位算法這2個條件非常容易窮舉出400000001這個目標值。

要解決這個問題,真實世界就不是使用乘法了,比如RSA算法使用的是指數和取模運算,但本質上就是上面這套思想。

—————————————————————————————————————————————————————————

對稱加密:這個容易理解

https://zhuanlan.zhihu.com/p/28831152

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