張三考試想作弊,使用什么加密算法?才不會(huì)被老師發(fā)現(xiàn)?
正所謂“平時(shí)不努力,考試靠兄弟,”考試臨近,作弊狂魔張三又在琢磨如何在期末考試中作弊了。
已知張三所在的學(xué)校,針對(duì)考試有兩個(gè)特別的規(guī)定:
- 試卷在考試前密封,監(jiān)考老師不知道考題,也不能在考試時(shí),查看學(xué)生的試卷內(nèi)容,所以老師無(wú)法知道正確答案。
- 抓學(xué)生作弊講證據(jù),即便發(fā)現(xiàn)學(xué)生在傳紙條,如果老師無(wú)法理解或解密紙條上的內(nèi)容,就不能定性為學(xué)生作弊。
當(dāng)然,這個(gè)學(xué)校的老師,有豐富的反作弊經(jīng)驗(yàn),像什么摸左耳代表B,摸右耳代表A之類的,根本逃不過(guò)老師的法眼。
對(duì)稱加密
一直夢(mèng)想著成為一名黑客的他,前天好像翻過(guò)一本關(guān)于網(wǎng)絡(luò)信息安全的書(shū)籍,里面提到一種加密方法叫“對(duì)稱加密”。
這是一種使用同一個(gè)密鑰進(jìn)行加密和解密的方法。
數(shù)據(jù)發(fā)送方將明文和加密密鑰通過(guò)特殊的算法處理后,使其變成很復(fù)雜的加密密文,然后發(fā)送給數(shù)據(jù)接收方,數(shù)據(jù)接收方再使用加密密鑰和相同算法的逆算法,對(duì)密文進(jìn)行解密,將密文恢復(fù)成明文。
張三想:
讓學(xué)習(xí)成績(jī)好的哥們兒李四,把正確答案寫(xiě)在紙條上,用對(duì)稱加密的方法對(duì)答案進(jìn)行加密,再傳給我,就算老師拿到了紙條,看不懂上面的內(nèi)容,就拿我沒(méi)辦法了!
說(shuō)干就干,張三設(shè)計(jì)了以下作弊步驟流程:
- 張三私底下告訴李四:“y=3(密鑰)。”
- 在考場(chǎng)黑板上寫(xiě)上:x+y=z(x表示答案,z表示加密后,寫(xiě)在紙條上的密文)
- 李四根據(jù)這一算法,加密答案,把z的值寫(xiě)在答案上,傳給張三
- 張三拿到紙條,用y的值進(jìn)行解密,還原答案
這樣一來(lái),由于y=3(密鑰)只有張三和李四知道,監(jiān)考老師即使拿到了紙條,由于沒(méi)有y的值,無(wú)法解密紙條上的內(nèi)容,也就拿他沒(méi)辦法了。
張三把想法告訴了李四,李四沉思了一會(huì)兒,告訴他其中存在的風(fēng)險(xiǎn):
(1) 怎么保證密鑰不泄露?
萬(wàn)一我們?cè)谏塘棵荑€的時(shí)候,被其他同學(xué)知道了,向老師告密,那我們的心血就白白浪費(fèi)了。
(2) 密鑰管理起來(lái)很難
假如李四這道題不會(huì),只能求救王五,你還得和王五商量一個(gè)密鑰,假如王五不會(huì),你還得和其他同學(xué)商量一個(gè)密鑰,如此一來(lái),密鑰非常多,萬(wàn)一記錯(cuò)了怎么辦?
的確,對(duì)稱加密有很多缺點(diǎn)。
非對(duì)稱加密
不甘心的張三回去又開(kāi)始翻書(shū)了,這回他找到了一個(gè)更好的方法——非對(duì)稱加密。
非對(duì)稱加密算法,需要用到兩個(gè)密鑰:公鑰和私鑰。它們倆是一對(duì)的,公鑰負(fù)責(zé)加密數(shù)據(jù),私鑰負(fù)責(zé)解密數(shù)據(jù)。
非對(duì)稱加密的好處是,公鑰是公開(kāi)的,任何人都可以使用公鑰加密數(shù)據(jù),但只有私鑰能解密,只要張三牢牢握住私鑰,任何人都不能解密出數(shù)據(jù)。
于是他又開(kāi)始設(shè)計(jì)起作弊的流程步驟:
(1) 張三在考場(chǎng)的黑板上寫(xiě)上:(((x*y)%1000)*m)%1000,x為三位數(shù),y=91,y是公鑰:取x和y的乘積的后三位數(shù),再乘以m,取后三位數(shù)
- 李四用公鑰加密答案,傳給張三
- 張三拿到加密后的數(shù)據(jù)后,用m=11解密數(shù)據(jù)
注:舉個(gè)例子,假如題目正確答案是111,則111乘以91=10101,取后三位101*11=1111,再取后三位得111,就能還原出答案,這是因?yàn)?1*11=1001,任何一個(gè)三位數(shù)乘以1001的后三位數(shù)都不會(huì)改變。之所以用y=91加密,卻可以用m=11解密就是這個(gè)道理。
有了非對(duì)稱加密,李四、王五和其他同學(xué),都可以使用y=91(公鑰)加密答案,由于m=11(私鑰)只有張三知道,所以也只有他能解密還原出答案。
整個(gè)過(guò)程,張三不需要向任何人傳遞密鑰,自然也就沒(méi)有泄露的風(fēng)險(xiǎn),密鑰只需要一對(duì)(一個(gè)公鑰和一個(gè)私鑰),管理起來(lái)也相當(dāng)方面。
設(shè)計(jì)完作弊方案后,張三激動(dòng)地告訴了李四。學(xué)霸李四聽(tīng)后點(diǎn)了點(diǎn)頭,但隨即他又提出了一個(gè)問(wèn)題:
比起對(duì)稱加密,非對(duì)稱加密的安全性是高了很多,但計(jì)算也更麻煩了,以前只是計(jì)算x+y=z,現(xiàn)在變成計(jì)算(((x*y)%1000)*m)%1000。
這樣一來(lái),當(dāng)李四把答案?jìng)鹘o張三后,張三要拼命地解密,可能考試結(jié)束了,都解不完。
這可怎么辦才好?
不甘心的張三又回去想辦法了……
(未完待續(xù)...)