加密小原理1
rsa密碼學小原理
- 設計類似的小游戲
猜數游戲
你心中默念一個數,把它乘以13,把結果告訴我,我就能知道你心中默念的數是什么。
某小學生:你這不?的廢話嗎,都把結果告訴你了,你再除以13不就知道我想的啥數了,我上二年級我就知道了。
別急,那我們降低點條件,你不用把結果告訴我,你只需把結果的后三位告訴我,我就知道你想的什么數!
小學生:我不信。心里默默算***x13=*927,好,我算的結果后三位是927,說說我剛剛心里想的啥吧!
我:心中默算927x77=71379,你剛剛想的數是379!
小學生:哇,牛逼!
其實原理很簡單,379x1001=379x13x77=379379,把379換算成任意一個三位數或者兩位數也是一樣的。
當然,上面只是例外,前提是小學生心中想的數<1000,要是小學生心中想的數>1000就失效了,所以,題目應該為,心中默念一個小于1000的數,把它乘以1000,把結果的后三位告訴我,我就知道你心中想的是什么數。
要是四位數想拿來玩,可以是:你心中想一個四位數,它乘以13,把后三位數告訴我,我就能知道你想的四位數的后三位是什么。
上述游戲不限于使用13x77,也可以使用91x11,因為13x17=11x91=1001,取后三位意思是除以1000的模。
原理如下:a%b=[ax(b+1)]%b
比如:
379%1000=[379x1001]%1000 這應該不難理解
上述式子還可推理為:
={[(379x13)%1000]x77}%1000
為什么乘以13先取模對結果不會有影響呢?
if :乘以13后的計算結果<1000,那么取模后值不變,取模相當于沒取模。
比如:(75x13)%1000=75x13
else :計算結果>1000,那么直接乘以77取1000模和先取1000模再乘以77再取1000模第二次,結果也是一樣的。
比如:
123x13=1599 1599%1000=599 599X77=46123 46123%1000=123
123x13=1599 1599x77=123123 123123%1000=123
設計類似的小游戲
根據公式:a%b=[ax(b+1)]%b
選擇隨機一個數b:比如14,意思是取14為模
那么14+1=15,把15進行因式分解,15=3x5
那么小游戲如下:你心中默念一個小于14的數,把它乘以3(或者x5),然后把它取14的模的計算結果告訴我,我就能知道你想的是哪個數!
tip:這里要知道取14的模,跟一千里知道后三位數是一樣的,告訴你后三位數就是告訴你取1000的模的計算結果!
總結
- 上一篇: c/c++中extern的作用
- 下一篇: 关于使用ajax给全局变量赋值失败的问题