古典密码(一)

古典密码(一)恺撒密码 Caesarcipher 又称为恺撒加密 恺撒变换 变换加密 它是一种替换加密的技术 明文中的所有字母都在字母表上向后 或向前 按照一个固定数目进行偏移后被替换成密文

大家好,欢迎来到IT知识分享网。

str=input("请输入密文:") n=int(input("请输入密钥:")) str_decrypt="" for word in str: if word==" ": #遇到空格选择不解密 word_decrypt=" " else: word_decrypt=chr((ord(word)-ord("A") -n) %26 +ord("A")) str_decrypt = str_decrypt+word_decrypt print("明文为:",str_decrypt)

 

import math def fun_deCrypto(string_M, Ek): Dk = int(len(string_M) / Ek) string_C = '' yushu = len(string_M) % Ek steps = [] if len(string_M) % Ek == 0: print('不存在余数') step = Dk for i in range(Ek): steps.append(step) print(steps) else: print('存在余数') big_step = math.ceil(len(string_M) / Ek) small_step = int(len(string_M) / Ek) for p in range(yushu): steps.append(big_step) for q in range(Ek - yushu): steps.append(small_step) print(steps) n_column = 0 while n_column < math.ceil(len(string_M) / Ek): count_steps = 0 for one_step in steps: if len(string_C) == len(string_M): break else: string_C += string_M[n_column + count_steps] count_steps += one_step n_column += 1 return string_C string_M = input("请输入密文:") Ek = int(input("请输入加密分组中的字符个数:")) plaintext = fun_deCrypto(string_M, Ek) print("明文为:", plaintext)

古典密码(一) 

 10个数字的摩斯密码表古典密码(一)

 标点符号的摩斯密码表

 古典密码(一)

 

def decrypt(message): # 在末尾添加额外空间以访问最后一个摩斯密码 message += ' ' decipher = '' citext = '' global i for letter in message: # 检查空间 if letter != ' ': i = 0 # 在空格的情况下 citext += letter # 在空间的情况下 else: # 如果 i = 1 表示一个新字符 i += 1 # 如果 i = 2 表示一个新单词 if i == 2: # 添加空格来分隔单词 decipher += ' ' else: # 使用它们的值访问密钥(加密的反向) decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT.values()).index(citext)] citext = '' return decipher

 

def vigenère(): from string import ascii_lowercase, ascii_uppercase low = ascii_lowercase # 获取小写字母 up = ascii_uppercase # 获取大写字母 a = int(input('您是进行加密还是解密,若加密,请输入"1",若解密,请输入“2”:')) if a == 1: print('您选择了加密') else: print('您选择了解密') key = list(input("请输入密钥:").lower()) # 转化为列表,方便改变单独字符 s = list(input("请输入文本:")) l_s = len(s) l_key = len(key) z = l_s // l_key y = l_s % l_key key = iter(key * z + key[:y]) if a == 1: for i in range(l_s): v = key.__next__() # 从k中依次迭代出字符赋值给v # 判断密钥中只能有字母 if v.isalpha(): n = low.index(v) # 确定每一次凯撒密码前进位数 else: print('密钥只能由字母组成') break # 将空格,大写字母,小写字母分开操作 if s[i] == ' ': continue elif s[i].islower(): new_low = low[n:] + low[:n] g = ''.maketrans(low, new_low) else: new_up = up[n:] + up[:n] g = ''.maketrans(up, new_up) #进行编码 s[i] = s[i].translate(g) # 将列表转化为连贯的字符串 new_s1 = ''.join(s) return new_s1 elif a == 2: for i in range(l_s): v = key.__next__() # 从key中依次迭代出字符赋值给v # 判断密钥中只能有字母 if v.isalpha(): n = low.index(v) # 确定凯撒密码前进位数 else: print('密钥只能由字母组成') break if s[i] == ' ': continue elif s[i].islower(): new_low = low[n:] + low[:n] g = ''.maketrans(new_low, low) else: new_up = up[n:] + up[:n] g = ''.maketrans(new_up, up) s[i] = s[i].translate(g) # 将列表转化为连贯的字符串 new_s1 = ''.join(s) return new_s1

 

 

 

 

 

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118615.html

(0)
上一篇 2025-11-11 21:00
下一篇 2025-11-11 21:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信