张三考试想作弊,使用什么加密算法?才不会被老师发现?

安全 数据安全 算法
正所谓“平时不努力,考试靠兄弟,”考试临近,作弊狂魔张三又在琢磨如何在期末考试中作弊了。

正所谓“平时不努力,考试靠兄弟,”考试临近,作弊狂魔张三又在琢磨如何在期末考试中作弊了。

已知张三所在的学校,针对考试有两个特别的规定:

  • 试卷在考试前密封,监考老师不知道考题,也不能在考试时,查看学生的试卷内容,所以老师无法知道正确答案。
  • 抓学生作弊讲证据,即便发现学生在传纸条,如果老师无法理解或解密纸条上的内容,就不能定性为学生作弊。

当然,这个学校的老师,有丰富的反作弊经验,像什么摸左耳代表B,摸右耳代表A之类的,根本逃不过老师的法眼。

[[398937]]

对称加密

一直梦想着成为一名黑客的他,前天好像翻过一本关于网络信息安全的书籍,里面提到一种加密方法叫“对称加密”。

这是一种使用同一个密钥进行加密和解密的方法。

数据发送方将明文和加密密钥通过特殊的算法处理后,使其变成很复杂的加密密文,然后发送给数据接收方,数据接收方再使用加密密钥和相同算法的逆算法,对密文进行解密,将密文恢复成明文。

张三想:

让学习成绩好的哥们儿李四,把正确答案写在纸条上,用对称加密的方法对答案进行加密,再传给我,就算老师拿到了纸条,看不懂上面的内容,就拿我没办法了!

说干就干,张三设计了以下作弊步骤流程:

  • 张三私底下告诉李四:“y=3(密钥)。”
  • 在考场黑板上写上:x+y=z(x表示答案,z表示加密后,写在纸条上的密文)
  • 李四根据这一算法,加密答案,把z的值写在答案上,传给张三
  • 张三拿到纸条,用y的值进行解密,还原答案

这样一来,由于y=3(密钥)只有张三和李四知道,监考老师即使拿到了纸条,由于没有y的值,无法解密纸条上的内容,也就拿他没办法了。

张三把想法告诉了李四,李四沉思了一会儿,告诉他其中存在的风险:

(1) 怎么保证密钥不泄露?

万一我们在商量密钥的时候,被其他同学知道了,向老师告密,那我们的心血就白白浪费了。

(2) 密钥管理起来很难

假如李四这道题不会,只能求救王五,你还得和王五商量一个密钥,假如王五不会,你还得和其他同学商量一个密钥,如此一来,密钥非常多,万一记错了怎么办?

的确,对称加密有很多缺点。

非对称加密

不甘心的张三回去又开始翻书了,这回他找到了一个更好的方法——非对称加密。

非对称加密算法,需要用到两个密钥:公钥和私钥。它们俩是一对的,公钥负责加密数据,私钥负责解密数据。

非对称加密的好处是,公钥是公开的,任何人都可以使用公钥加密数据,但只有私钥能解密,只要张三牢牢握住私钥,任何人都不能解密出数据。

于是他又开始设计起作弊的流程步骤:

(1) 张三在考场的黑板上写上:(((x*y)%1000)*m)%1000,x为三位数,y=91,y是公钥:取x和y的乘积的后三位数,再乘以m,取后三位数

  • 李四用公钥加密答案,传给张三
  • 张三拿到加密后的数据后,用m=11解密数据

注:举个例子,假如题目正确答案是111,则111乘以91=10101,取后三位101*11=1111,再取后三位得111,就能还原出答案,这是因为91*11=1001,任何一个三位数乘以1001的后三位数都不会改变。之所以用y=91加密,却可以用m=11解密就是这个道理。

有了非对称加密,李四、王五和其他同学,都可以使用y=91(公钥)加密答案,由于m=11(私钥)只有张三知道,所以也只有他能解密还原出答案。

整个过程,张三不需要向任何人传递密钥,自然也就没有泄露的风险,密钥只需要一对(一个公钥和一个私钥),管理起来也相当方面。

设计完作弊方案后,张三激动地告诉了李四。学霸李四听后点了点头,但随即他又提出了一个问题:

比起对称加密,非对称加密的安全性是高了很多,但计算也更麻烦了,以前只是计算x+y=z,现在变成计算(((x*y)%1000)*m)%1000。

这样一来,当李四把答案传给张三后,张三要拼命地解密,可能考试结束了,都解不完。

这可怎么办才好?

不甘心的张三又回去想办法了……

(未完待续...)

 

 

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2013-10-17 13:20:34

2023-10-16 19:05:20

2020-01-15 08:42:16

TCP三次握手弱网络

2021-11-22 23:20:01

加密算法架构

2023-08-02 07:27:53

2023-08-01 07:24:05

2009-08-13 18:12:11

C#数据加密

2012-09-13 09:58:38

2023-07-30 17:44:24

CryptoJS加密字符串

2014-09-23 09:08:41

2011-08-18 12:12:29

2020-12-16 05:46:58

算法加密算法MD5

2009-08-21 15:02:31

C#加密算法

2011-08-01 10:12:40

PHP

2009-08-04 11:08:33

ASP.NET数据加密

2018-12-18 09:06:07

2010-09-09 10:06:56

Zigbee协议栈加密算法

2020-05-08 11:13:28

Python数据技术

2018-07-10 10:29:27

2015-06-23 11:11:55

点赞
收藏

51CTO技术栈公众号