埃特巴什码加解密小程序

news2024/11/23 18:28:09

埃特巴什码加解密小程序

这几天在看CTF相关的课程,涉及到古典密码学和近代密码学还有现代密码学。

简单替换密码

Atbash Cipher

埃特巴什码(Atbash Cipher)其实可以视为下面要介绍的简单替换密码的特例,它使用字母表中的最后 一个字母代表第一个字母,倒数第二个字母代表第二个字母。在罗马字母表中,它是这样出现的:

ABCDEFGHIJKLMNOPQRSTUVWXYZ 明码表 
ZYXWVUTSRQPONMLKJIHGFEDCBA 密码表

比如埃 码

明文:the quick brown fox jumps over the lazy dog 
密文:gsv jfrxp yildm ulc qfnkh levi gsv ozab wlt

按照上面的规则,我编了一个小工具。源码如下:

import tkinter as tk
from tkinter import messagebox
code_dict  = {'A': 'Z', 'B': 'Y', 'C': 'X', 'D': 'W', 'E': 'V', 'F': 'U', 'G': 'T', 'H': 'S', 'I': 'R', 'J': 'Q', 'K': 'P', 'L': 'O', 'M': 'N', 'N': 'M', 'O': 'L', 'P': 'K', 'Q': 'J', 'R': 'I', 'S': 'H', 'T': 'G', 'U': 'F', 'V': 'E', 'W': 'D', 'X': 'C', 'Y': 'B', 'Z': 'A'}

def encrypt(plaintext):
    ciphertext = ''
    for char in plaintext.upper():
        if char.isalpha():
            ciphertext += code_dict.get(char, '')
        else:
            ciphertext += char
    return ciphertext

def decrypt(ciphertext):
    plaintext = ''
    for char in ciphertext.upper():
        if char.isalpha():
            for k, v in code_dict.items():
                if char == v:
                    plaintext += k
        else:
            plaintext += char
    return plaintext

class CaesarCipherGUI:
    def __init__(self, master):
        self.master = master
        master.title("埃特巴什码加解密--微信号强壮Python")

        # Create a frame to hold the input and output fields
        self.frame = tk.Frame(master)
        self.frame.pack(fill=tk.BOTH, expand=1)

        # Create the input field
        self.input_label = tk.Label(self.frame, text="输入信息", anchor='w', justify='left')
        self.input_label.pack()
        self.input_entry = tk.Entry(self.frame, width=40, justify='left')
        self.input_entry.pack()

        # Create the buttons
        self.button_frame = tk.Frame(self.frame)
        self.button_frame.pack(fill=tk.X)

        self.encrypt_button = tk.Button(self.button_frame, text="加 密", command=self.encrypt_message)
        self.encrypt_button.pack(side='left', padx=5)

        self.decrypt_button = tk.Button(self.button_frame, text="解 密", command=self.decrypt_message)
        self.decrypt_button.pack(side='left', padx=25)

        # Create the output field
        self.output_label = tk.Label(self.frame, text="输 出", anchor='w')
        self.output_label.pack()
        self.output_text = tk.Text(self.frame, width=52, height=10, wrap='word')
        self.output_text.pack()

    def encrypt_message(self):
        plaintext = self.input_entry.get()
        ciphertext = encrypt(plaintext).lower()
        self.output_text.delete('1.0', tk.END)
        self.output_text.insert('1.0', ciphertext)

    def decrypt_message(self):
        ciphertext = self.input_entry.get()
        plaintext = decrypt(ciphertext).lower()
        self.output_text.delete('1.0', tk.END)
        self.output_text.insert('1.0', plaintext)

root = tk.Tk()
my_gui = CaesarCipherGUI(root)
root.mainloop()

备注:界面是用AI生成,稍加修改。

运行结果如下图:

Screenshot 2024-06-25 at 22.24.10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1862527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十七)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 27节) P27《26.Stage模型-UIAbility的启动模式》 本节讲解 UIAbility的启动模式:Stage模型的应用&#x…

语言的数据结构:树与二叉树(二叉树篇)

语言的数据结构:树与二叉树(二叉树篇) 前言概念特别的二叉树满二叉树完全二叉树 存储结构顺序存储链式存储 查找方式 前言 上文说到了树,有人认为二叉树是树的每一个分支都有两个子节点。其实这也对。但二叉树在此基础上还做了限…

支持离线翻译任意语言的桌面应用程序;单张图像高效生成高质量的 3D 模型;2500种色彩映射的集合,适用于matplotlib和seaborn

✨ 1: Lingo Lingo是一款支持离线翻译任意语言的桌面应用程序 Lingo 是一款支持离线翻译的桌面应用程序,用户可以在不连接互联网的情况下进行多语言翻译。这款软件利用了Meta公司提供的nllb-200-distilled-600M 多语言模型,以实现高效的翻译功能。 没…

jupyter notebook的markdown语法不起作用

在这个界面编辑,发现markdown你编辑的是什么就是什么,不起作用,然而点一下: 右上角“Notebook转发”,就会单独跳出一个jupyter notebook的界面,此时就会奏效:

6.25作业

1.整理思维导图 2.终端输入两个数,判断两数是否相等,如果不相等,判断大小关系 #!/bin/bash read num1 read num2 if [ $num1 -eq $num2 ] then echo num1num2 elif [ $num1 -gt $num2 ] then echo "num1>num2" else echo &quo…

大学生搜题神器网站?分享七个支持答案和解析的工具 #职场发展#学习方法

在现代科技的帮助下,大学生们有幸能够利用各种日常学习工具来提升自己的学习效果。 1.全球翻译官 是一款在线翻译语言的服务平台,在app中,用户能够在线通过语音,拍照来翻译语言,非常的便捷,也支持文字翻译哦 全球翻…

SDA626 3A,4.5V-16V输入,500kHz同步降压型转换器

一般说明 该SDA626是一个完全集成,高效率的3A同步整流降压转换器。该SDA626工作在一个宽的输出电流负载范围高效率该设备提供两种工作模式,PWM控制和PFM模式切换控制,这使得在更广泛的负载范围内具有较高的效率。 SDA626需要最…

浦语·灵笔2 模型部署图片理解实战

效果图镇楼 1、使用 huggingface_hub 下载模型中的部分文件(演示练习与模型实战无关) 使用 Hugging Face 官方提供的 huggingface-cli 命令行工具。安装依赖: pip install -U huggingface_hub 然后新建 python 文件,填入以下代码&#xf…

Ubuntu20.04使用Samba

目录 一、Samba介绍 Samba 的主要功能 二、启动samba 三、主机操作 四、Ubuntu与windows系统中文件互联 五、修改samba路径 一、Samba介绍 Samba 是一个开源软件套件,用于在 Linux 和 Unix 系统上实现 SMB(Server Message Block)协议…

iptables(4)规则匹配条件(源、目、协议、接口、端口)

简介 前面我们已经介绍了iptables的基本原理,表、链,数据包处理流程。如何查询各种表的信息。还有基本的增、删、改、保存的基础操作。 经过前文介绍,我们已经能够熟练的管理规则了,但是我们只使用过一种匹配条件,就是将”源地址”作为匹配条件。那么这篇文章中,我们就来…

为什么小程序每次提交会有很多unpackage下的文件

解决办法.gitignore 文件 .DS_Store /unpackage# local env files .env.local .env.*.local# Log files npm-debug.log* yarn-debug.log* yarn-error.log*# Editor directories and files .idea .vscode *.suo *.ntvs* *.njsproj *.sln *.sw?

获取 S 参数仿真中属性所对应的值

获取 S 参数仿真中属性所对应的值 引言正文对 S41 参数进行获取方法一方法二方法三引言 应该有很多小伙伴有过困惑,在进行 S 参数扫描后,想要可视化一下对应参数的图像,每次手动点击一个是比较麻烦,另一个是显示的效果并不是很美观。此时,如果我们可以使用 Lumerical 脚本…

工作之建造者模式

刚刚开通了一个公众号,会分享一些技术博客和自己觉得比较好的项目,同时会更新一些自己使用的工具和图书资料,后面会整理一些面试资料进行分享,觉得有兴趣的可以关注一下。 项目场景: 工作中最近对接的第三方系统的AP…

数组,链表,红黑树介绍以及性能对比实验

作者:晓宜 🌈🌈🌈 个人简介:携程javaer,阿里云专家博主,csdn后端优质创作者,算法爱好者 ❤️❤️❤️ 一起进步!!!😊 前言 以前学了数…

安装zabbix时报错Could not resolve host: mirrors.huaweicloud.com;Unknown error解决办法

目录 1、问题原因 2、解决办法 3、知识拓展 DNS的区别 DNS配置文件解析 域名解析过程 4、书籍推荐 当安装Zabbix server,Web前端,agent时出现: [rootsc-zabbix-server ~]# yum install zabbix-server-mysql zabbix-agent安装过程中会出…

【咨询】企业数字档案馆建设规划建议书-模版范例

导读:本文提供范例可以作为xxx建设规划建议书模版 建议书结构 第一章 项目背景及意义 1.1.企业数字档案馆建设是构建新质生产力的重要抓手 1.2.企业数字档案馆建设是落实全国档案事业发展规划的重要支撑 1.3.企业数字档案馆建设是支撑提质增效、高质量发展的有效…

利用scalene进行性能分析和优化

​ 上一篇文章,我们详细讲解了Py-Spy这个性能分析和优化工具的使用流程;今天,我们将深入探讨另一个性能分析和优化工具——scalene。 什么是scalene? scalene是一个高精度的Python性能分析工具,可以对CPU和内存使用情…

为什么说大数据对电子商务卖家至关重要?||电商API接口

从数据中获取价值的重要性,远甚以往。 由于新冠的爆发,所有B2B公司都被迫将业务转到线上的电子商务平台以加速数字化转型;而随着疫情逐渐褪去,这种线上线下混合的趋势得以进一步加强。 企业希望能够在自己选定的设备上&#xff0c…

视频太大如何压缩上传微信

视频太大如何压缩上传微信,视频已成为人们生活中不可或缺的一部分。然而,视频文件的大小也在不断增加,这给存储和传输带来了极大的挑战。下面给大家分享一个视频太大不能发微信的解决方法。 打开 “51视频处理官网 的网站。上传视频。 ​视频…

CentOS9镜像下载地址加速下载

CentOS 9 是 CentOS 项目的最新版本之一,它基于 RHEL(Red Hat Enterprise Linux)9 的源代码构建。CentOS(Community ENTerprise Operating System)是一个免费的企业级 Linux 发行版,旨在提供一个与 RHEL 兼…