Python工具箱系列(十一)

2025-12-13 0 1,042

上文讲的古典加密算法虽然很简单,但是在密码史上是使用最久的加密方式。历史上由于算力有限,加上有学识的人有限,所以直到概率论出现后,古典密码才开始破防。归根结底,英文单词中字母出现的频率是不同的,e以12.702%的百分比占比最高,z只占到0.074%,感兴趣的同学可以去百科查字母频率详细统计数据。如果密文数量足够大,仅仅采用频度分析法就可以破解。如果再加上现代计算机强大的算力,凯撒加密算法更是不堪一击。

后续人类不断改进,在二战时期涌现了新的思路与算法。恩尼格玛机就是二战时期纳粹德国使用的加密机器,非常经典,并且难以破译。英国集全国之力进行破译,参与破译的人员有被称为计算机科学之父、人工智能之父的图灵。恩尼格玛机使用的加密方式本质上还是移位和替代,只不过因为密码表种类极多,破解难度高,同时加密解密机器化,使用便捷。恩尼格玛机共有26个字母键和26个带有字母的小灯泡,当按下键盘上的键时,加密后的密文字母所对应的小灯泡就会亮起来,依次记录密文发送给接收者就实现了密文传输。接收者也用相同的恩尼格玛机,依次输入密文并获取原文。密码机内装有“转子”装置,每按下键盘上的一个字母,“转子”就会自动地转动一个位置,相当于更换了一套密码表。最开始“转子”只有6格,相当于有6套密码表,后来升级到了26格,即有26套密码表。后来恩尼格玛机由一个“转子”升级到了多个“转子”,是密码表套数成指数级增长。最高水准恩尼格玛机具有8个“转子”,密码表套数为26的8次方,达到了2000多亿种。此时靠人工进行破译就不太可能了,国内某抗日神剧中一个数学美女天才,靠几张纸就破译了真的只能是呵呵了。电影《模仿游戏》较为真实得复现了破解方法,就是采用了类似现代计算机的机械机器进行快速运算。

现代经典密码学针对加解密问题,发展出几个大的方向:

  • 对称加密
  • 非对称加密
  • 散列

本文将简单介绍对称加密的python实现。先谈主要的对称加密算法,主要有以下几类:

  • DES(数据加密标准,Data Encryption Standard)。DES 应该是最早的现代密码学算法之一。它由美国政府提出,密钥长度为56位。目前,它暴力破解56位密码的时间,已经能控制在24小时内了。DES实际上是一个过时的密码学算法,目前已经不推荐使用了。关于DES,还有一点特别有意思。DES 包含一个关键模块:S盒,其设计的原理一直没有公开。因此,很多人都相信,这个S盒中存在后门,只要美国政府需要,就能够解密任何DES密文。
  • IDEA(国际数据加密算法,International Data Encryption Algorithm)。IDEA 由瑞士研究人员设计,密钥长度为128位。对比于其他的密码学算法,IDEA的优势在于没有专利的限制。相比于DES和AES的使用受到美国政府的控制,IDEA的设计人员并没有对其设置太多的限制,这让 IDEA在全世界范围内得到了广泛的使用和研究。
  • AES(高级加密标准,Advanced Encryption Standard)。在DES被破解后,美国政府推出了AES算法,提供了128位、192位和256位三种密钥长度。通常情况下,我们会使用128位的密钥,来获得足够的加密强度,同时保证性能不受影响。目前,AES是国际上最认可的密码学算法。在算力没有突破性进展的前提下,AES在可预期的未来都是安全的。
  • 国密标准或者自研加密算法。

对称密钥能够广泛用于:

  • 数据文件与数据库内容的加密。
  • 网络传输的信息加密。
  • 硬件/内核/驱动级加密,例如基于文件系统的加密等。

# pip install cryptography

from cryptography.fernet import Fernet

# 生成对称密钥
key = Fernet.generate_key()
print(key)

# 用密钥加密
coder = Fernet(key)
crymsg = coder.encrypt(b\’what are you doing?\’)
print(crymsg)

# 用密钥解密
plaintext = coder.decrypt(crymsg)
print(plaintext)

代码运行后,能够看到加密后的密文比原文要长。实际运行时,密钥一定要保存好,丢失了密文就基本解不出来了。当然暴力破解还是可以的,只不过代价巨大。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 Python工具箱系列(十一) https://www.zuozi.net/36243.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务