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