![](https://img-blog.csdnimg.cn/20200509171056236.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
密码学
密码学学习记录
亡月之莹
生命的目的,并不是为了存在,而是为了燃烧。燃烧才会有光亮,哪怕只有一瞬的光亮也好。
展开
-
10.素数的判断
法一# 法一while True: num = int(input("Please enter a number : ")) if (num == 1): print("Prime numbers are greater than 1 and have only 1 and their own integers") else: for i in range(2,num): if(num%i == 0):原创 2020-07-07 20:31:29 · 127 阅读 · 0 评论 -
9.加密和解密文件
内容利用置换加密法对整个文件加密或解密操作。这种文件只包含文本文数据,扩展名为.txt的文件。代码import math #---------------置换表----------------#letter_1 = ''letter_2 = ''letter_message = ''letter_password = ''# 代换表一piw = input("input letter1:")for i in piw: if 'a' <= i <= 'z':原创 2020-07-09 16:52:21 · 191 阅读 · 0 评论 -
8.置换加解密
内容实现给定字符串的加密功能,具体要求如下:其中前两个输入为代换表,第三个输入为明文,要求根据代换表,计算出密文,并打印代换后的密文。(1) mbgyalzvepsfonxqgduritwkch(2) vgiyzmpxgbscutkrnhoafdqwel(3) ggxrpnrvystmwcysyycqpevikeffmznimkkasvwsrenzkycx代码import math #---------------置换表----------------#letter_1 = ''le原创 2020-07-09 16:47:39 · 350 阅读 · 0 评论 -
7.Hill(希尔)加密
原理Hill密码是一种多字母替代密码,由数学学Leste Hill于1929年研制成功。该密码算法取m个连续的明文字母,并用m个密文字母代替,用向量或矩阵表示为(这里取m=3,C和P是长度为3的列向量,K是3*3矩阵)。即:C=KP (C为密文,P为明文,K为密钥矩阵)PS:加密操作要执行模26运算案例设要加密的明文为julg,密钥为: 则可将明文化为如下的两个加密单元:(9,20)(9,20)(对应于ju)和(11,24)(11,24)(对应于ly)。分别对其进行加密变换如下:代码#i原创 2020-07-09 16:42:20 · 1756 阅读 · 0 评论 -
6.维吉尼亚加解密
原理:在加解密时,同样把英文字母映射为0-25的数字再进行运算,并按n个字母一组进行变换。明文空间、密文空间及密钥空间都是长度为n的英文字母串的集合。因此可表示为:加密变换定义如下:设密钥 k=(k1,k2,…,kn), 明文m=(m1,m2,…,mn),加密变换为:Ek(m)=(c1,c2,…,cn), 其中ci=(mi + ki)(mod26),i =1,2,…,n对密文 c=(c1,c2,…,cn):解密变换为:Dk(c)=(m1,m2,…,mn), 其中 mi=(ci -k原创 2020-06-26 12:46:39 · 740 阅读 · 0 评论 -
5.仿射加密
5前面发漏了,现在补上原理仿射密码也是一般单表替代密码的一个特例,是一种线性变换。仿射密码的明文空间和密文空间与移位密码相同,但密钥空间为 K={(k1,k2)| k1,k2∈Z26,gcd(k1,26)=1}对任意m∈M,c∈C,k = (k1,k2)∈K,定义加密变换为:c = Ek (m) = k1 m +k2 (mod 26)相应解密变换为: m = Dk (c) = k1-1 (c-k2) (mod 26)编程python实现:# 字母表LETTERS = 'ABCDEFGHI原创 2020-06-26 23:10:32 · 649 阅读 · 0 评论 -
4.一般单表替代加解密
一般单表替代密码的原理是以26个英文字母集合上的一个置换π为密钥,对明文消息中的每个字母依次进行变换。可描述为:明文空间M和密文空间C都是26个英文字母的集合,密钥空间K={π:Z26→Z26|π是置换},是所有可能置换的集合。对任意π∈K,定义:加密变换:eπ(m)=π(m)=c解密变换:dπ© = π-1©=m, π-1是π的逆置换。单表代替是密码学中最基础的一种加密方式。在加密时用一张自制字母表上的字母来代替明文上的字母(比如说A——Z,B——D)来达到加密。移位密码也属于单表代替,只不过比原创 2020-06-22 17:42:25 · 3477 阅读 · 0 评论 -
3.暴力破解凯撒密码
没有什么可以阻止密码破译者猜测一个密钥,然后用这个密钥解密密文,查看输出,如果该密钥不是正确的密钥就继续尝试下一个密钥。这种每一个可能的解密密钥的技术叫暴力破解。# 凯撒密码暴力破解# (BSD Licensed)message = input("message:")LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'# 把每个可能的密钥循环一遍for key in range(len(LETTERS)): # key代表密钥 # translated原创 2020-06-22 17:23:08 · 4281 阅读 · 0 评论 -
2.凯撒密码加密解密(C)
明文空间M、密文空间C都是和密钥空间K满足,M=C=K={0,1,2,…,25}=Z_26 ,即把26个英文字母与整数0,1,2,…,25一一对应。加密变换,E={E:Z26→Z26, Ek (m) = m + k (mod26)| m∈M, k∈K }解密变换,D={D:Z26→Z26, Dk © = c-k (mod26)| c∈C, k∈K }解密后再把Z26中的元素转换英文字母。密文 = 明文 + key(mod26) 【把明文字母依次向后移k位,其中k小于26】当密钥k=3时,就是历史原创 2020-06-22 17:04:49 · 3926 阅读 · 0 评论 -
1.反转加密
反转加密通过反向输出消息进行加密。 例如,‘hello word!’加密之后变成‘!drow olleh’解密的话,就是把你的消息在反转过来就能得到原来的消息了。message = input("message: ")#输入字符时要加双引号translated = ' 'i = len(message) - 1while i >= 0: translated = translated + message[i] i = i -1print('\n')pr..原创 2020-06-22 16:43:17 · 1217 阅读 · 0 评论