从《天才枪手》学到的对称加密知识,你确定不看看?

Java技术 潘老师 4年前 (2020-09-28) 1295 ℃ (0) 扫码查看

18年5月,《天才枪手》在泰国一上映,仅两周就斩获了1亿泰铢的票房,一跃成为电影界的一匹“黑马”。其中有个作弊情节是这样的:

枪手小琳利用手指不停地敲击考桌(实际上她是在敲曲子),在向其他小伙伴传递着答案,利用4首曲子分别代表答案ABCD,小伙伴们则以曲会意,最后都收获了满意的答案

从《天才枪手》学到的对称加密知识,你确定不看看?

我们可以简化下他们的作弊逻辑:

事前必须约定一套作弊(加密)规则:即:A=曲1,B=曲2,C=曲3,D=曲4

这样,小伙伴只要能知道小琳发出的信号是曲几,他们就知道了对应的答案。即使小琳的信号被监考老师截取,如果监考老师不知道其中的规则,也只能一头雾水,毕竟无凭无据。

这就是简单的对称加密。什么是对称加密的科学定义?

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密——百度百科

小琳将自己的答案BADC利用规则加密为曲2曲1曲4曲3依次发送出去,而小伙伴们则根据同样的规则进行逆操作,就能将曲2曲1曲4曲3解密为BADC,这样就完成了获取原文->密钥加密->密文传输->密钥解密->获取原文 整个信息传输的过程。

用伪代码简单表述逻辑如下(switch case函数类似于如果你有很多money,你就是富翁的表述):

小琳加密如下:

switch(原文){
    case "A":
            密文 = "曲1";break;
    case "B":
            密文 = "曲2";break;
    case "C":
            密文 = "曲3";break;
    case "D":
            密文 = "曲4";break;
    default: 密文 = "";
}

而小伙伴解密如下:

switch( 密文 ){
    case "曲1":
             原文   = "A";break;
    case "曲2 ":
             原文   = "B";break;
    case "曲3":
             原文   = "C";break;
    case "曲4":
             原文   = "D";break;
    default:  原文   = "";
}

因此,我们可以简单的将对称加密理解为一对函数,加密就像y = F(x),有输入x就有输出y,而解密则相当于一个反函数x = G(y),有y输入就有输出x。至于函数具体怎么实现的,那就算法攻城狮与数学家们的事,我们大可不必操心。

要保证对称加密的安全传输,要基于两个基本点:

  • (1)双方约定的相同的加密规则
  • (2)不可让第三方知道加密规则

因此,对称机密的软肋也就显而易见,试想如果监考老师是个考场名捕,这点小把戏估计分分钟就被看穿了,不当场抓获,估计也会成为重点监控对象。

对称机密规则一但被破解,所有的信息将一目了然,信息传输宣告失败,当然,作弊也不例外,所以要想作弊不被抓,就得有更高级的加密方法,因此“非对称加密”就应运而生了。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/1378.html
喜欢 (4)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】