python实现凯撒密码加密与解密(暴力求解)

您所在的位置:网站首页 凯撒密码的程序代码 python实现凯撒密码加密与解密(暴力求解)

python实现凯撒密码加密与解密(暴力求解)

2024-07-16 03:45| 来源: 网络整理| 查看: 265

在密码学中,凯撒密码(英语:Caesar cipher),或称凯撒加密、凯撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。 需求分析: 1、输入一行明文,使用凯撒加密方法对其加密,其中为保证加密的随机性,对Key进行随机处理。 2、对于加密后的密文,使用暴力搜索的方法对其进行解密,并调用字典对解密后的字词进行比较,自动选出正确的密匙。 例如: 在这里插入图片描述

先放一个不带UI界面的代码

from random import randint import enchant from enchant.checker import SpellChecker import numpy as np import string #加密 def kaisa(s, k): # 定义函数 接受一个字符串s 和 一个偏移量k lower = string.ascii_lowercase # 小写字母 upper = string.ascii_uppercase # 大写字母 before = string.ascii_letters # 无偏移的字母顺序 小写+大写 after = lower[k:] + lower[:k] + upper[k:] + upper[:k] # 偏移后的字母顺序 还是小写+大写 # 分别把小写字母和大写字母偏移后再加到一起 table = ''.maketrans(before, after) # 创建映射表 return s.translate(table) # 对s进行偏移 即加密 s = input('请输入一个字符串:') k = randint(0,26) #从0-25中挑选随机一个数字当做偏移量 print(kaisa(s, k)) #解密 # message = input("message:") message = kaisa(s,k) LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' true_yuju = "" tmp = np.ones((1,26)) # print(tmp) # 把每个可能的密钥循环一遍 message = "GUVF VF ZL FRPERG ZRFFNTR" for key in range(len(LETTERS)): # key代表密钥 # translated设为空字符串 # 每次循环后清空. translated = '' # 密文里的每一个字符按顺序解密 for symbol in message: if symbol in LETTERS: num = LETTERS.find(symbol) # 在26个字母里搜索到密文字符的位置 num = num - key # 检查是否小于0,如果小于0,就加上26 if num


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3