密码学
文章平均质量分 83
用Python实现多种古典加密算法与现代使用的加密算法,同时最后会将所有加密算法汇总成一个Python小程序。
(个人学习与复习)
竹等寒
本洞府用来记录心得与笔记,道友们权当进来看个热闹。
若寒舍能助道友领悟大道,本散修也为之感到高兴。
展开
-
密码学—Vigenere破解Python程序
在计算重合指数的时候对字典有了一个更深的了解,字典可以按需使用,我这里就采用数组作为键,大大提高了编程效率,还认识到了在3.6版本之后的Python已经支持按顺序打印输出了,不再是无序的字典,这也帮我解决了很大一部分繁琐的操作。因为用的就是常用词频统计的出来的概率,同样这个表不用我们统计,网上一查一堆。由于已知密钥了,所以只需要将其密钥的单个字母对单个凯撒解密之后,将其解密的凯撒表与AZ表对应的字母概率相乘,最后将其所有结果加起来是否接近0.065,如果接近则可以考虑将其纳入真实密钥的列表名单。原创 2023-06-29 00:01:19 · 1278 阅读 · 0 评论 -
密码学—DES加密算法
确实思维得到训练了,比如有个方法就是记录下标的方式去解决掉如何将其原本的单独的字符转为二进制之后进行区分不同字符,因为加密的时候是一连串的二进制,还是固定位数进出的,难免原本的字符对应的二进制数字会四分五裂,所以我绞尽脑汁也就想到了这方法,当然我相信不止我这种方法,还有很多,希望以后能想到然后回来优化。进行到16轮的时候,将右边数据复制到右边位置,左边位置需要进行L与F函数的异或,F函数照样使用R来进行。这里只是将最后出来的32位进行置换一下,然后F函数结束,接着就是和L进行异或了。F函数:密钥异或加密。原创 2023-06-28 00:26:49 · 948 阅读 · 0 评论 -
密码学—DES加密的IP置换Python程序
添加好下标之后就要将其组合了,因为我们的空格已经发挥了他的作用了,所以就将空格全部去掉,然后将其所有二进制数据组合成一串连续的二进制数字,这也是我们要将其下标记录的原因,我们一旦将其组合成串二进制数字的时候,如果直接转回字符就转不回来了,因为我们需要的不是一串而是分开的一段一段的字母或者中文等等。为啥要减去前面空格出现的次数,因为空格出现的次数就是我添加下标的次数,然后解码的时候是不用空格的,是用空格spilt掉然后空格就没有了,所以在这里添加的下标应该是预测到后面解码要用到的下标。原创 2023-06-28 00:11:41 · 1042 阅读 · 0 评论 -
密码学—重合指数法Python程序
计算重合指数就是用来验证在Kasiski测试法中猜测出来的各种密钥长度哪一个才是最接近真实密钥长度的。这就是使用个重合指数法将其Kasiski猜测的密钥长度进一步进行验证了。最后一步的0.055原创 2023-06-28 00:10:47 · 1242 阅读 · 0 评论 -
密码学—Kasiski测试法Python程序
Kasiski是辅助破解Vigenere的前提工作,Kasiski是猜测加密者使用Vigenere密码体系的密钥的长度,Kasiski只是猜测长度而已,所以说是辅助破解Vigenere若密文中出现两个相同的密文段(密文段的长度m>2),则它们对应的明文(及密钥)将以很大的概率相同(后文有一个该概率的计算)。针对多表密码,首要的是得到秘钥字的长度,进一步判断密钥字的长度是否为:m=gcd(d1,d2,…,di) d:为密文片段直接的距离。原创 2023-06-28 00:12:09 · 966 阅读 · 4 评论 -
密码学—RSA公钥算法Python程序
在RSA中加密加密并不难,主要是在现实生活中加密的文本的一般对应在转为ASCII的时候对应的数字会特别大,所以假如说我们选择的p×q=n的n不够大,也就是说明文对应的数字大于n这大小的时候就会导致加密失败。一定要注意模数范围,如果你要加密的数字超过你所在的模数范围就会加密失败,你的要加密的数字必须在你选取的模数范围内,其实这个模数也就是明文空间。怎么看空间:就是看你计算式子的模数,好比密钥d,计算的式子是模 φ(n),那空间就是 φ(n),明文空间就是你选取好的两个素数相乘后的n大小。原创 2023-06-28 00:11:31 · 536 阅读 · 0 评论 -
密码学—Vigenere加密Python程序
很明显就是将给出的信息,首先按照原来的顺序按照密钥长度5个分开,然后再根据每一个组的相同下标的字母给与之对应下标的密钥字母进行凯撒加密,比如每一小组的第一个组成的凯撒加密表就是用J加密的,因为秘钥中的第一个字母就是J,然后我们要在分好的小组里面全部的小组第一个都用J加密。维吉尼亚密码的加密算法实质是凯撒密码,因为他是先分好小组,然后用密钥串对应着分好组的每一个字母进行加密(因为一个凯撒表用密钥串的一个字母加密),当然是遵循下标相同的,比如秘钥为:abc,明文为qwer,然后明文可分组为。原创 2023-06-28 00:03:45 · 1488 阅读 · 0 评论 -
密码学—仿射密码Python程序
古典密码,且属于单表加密。k在放射密码中作为乘数。b在放射密码中作为加数。原创 2023-06-28 00:05:36 · 1095 阅读 · 0 评论 -
密码学—凯撒密码Python程序
最主要的步骤还是将其移动后的字母的数字要模26,因为凯撒的明文空间就是26个,密文空间也是26个。凯撒密码又称恺撒变换、变换加密,凯撒是当时罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。算法就是加上加密算法和一些自己定义的细节比如全部大写或者全部小写,追求精益求精的还可以记住用户输入的内容的大小写然后根据他的内容进行加密。我觉得叫带有’变换’俩字的好,因为这个算法就是将信息移动替换的过程。下面的代码就是不管用户是否大小写,最后出来的结果我全部转为大写了。古典密码,且属于单表加密。原创 2023-06-28 00:05:06 · 1835 阅读 · 0 评论