埃特巴什码加解密小程序

简介: 埃特巴什码加解密小程序

埃特巴什码加解密小程序
这几天在看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生成,稍加修改。

运行结果如下图:

image.png

相关文章
|
5月前
|
算法 安全 Java
AES加解密算法:原理、应用与安全性解析
AES加解密算法:原理、应用与安全性解析
|
6月前
|
Shell 数据安全/隐私保护
加密解密工具
加密解密工具
165 1
|
算法 安全 数据安全/隐私保护
XTEA加密算法实现过程
XTEA加密算法实现过程
150 0
|
算法 Java 数据安全/隐私保护
加密解决方案-Java实现RSA非对称加密
本文基于RSA加密算法原理,详述什么是RSA算法、RSA加密解密原理进行实践的过程。
918 1
加密解决方案-Java实现RSA非对称加密
|
安全 算法 大数据
对称加密加密原理和开发场景解析
加密是自古以来人们都在不断使用的技术,目的是为了隐藏信息,只是随着时代在不断的变化,加密也在不断的更新。从古代的藏宝图对藏宝地点进行隐藏。到二战时候,破译敌方电台,都是属于加密和破解的过程。进入21世纪后,加密在互联网时代也有了新的加密方法。也创造了密码学这个学科。目前在加密的场景下,通常分为:可逆加密和不可逆加密。而在可逆加密场景里又分为:对称加密和非对称加密。本次主要讨论集中在可逆加密上。可逆加密顾名思义就是在对明文进行加密后生成密文,能够通过解密把密文再还原成明文。数据加密一般主要解决三个问题:可信问题(非对称加密可解决),防篡改问题(不可逆加密解决),防窃听问题...
384 0
|
算法 安全 数据安全/隐私保护
非对称加密加密原理和开发场景解析
过上一节,就能很好的理解非对称加密就是加密和解密双方使用的是不同的密钥。比喻就是:一把锁,如果被A用钥匙锁上了,那么A无法继续使用自己的钥匙打开,只能让B用他的钥匙打开。而如果B用钥匙把锁给锁上之后,同样必须只有A的钥匙才能打开。所以非对称加密主要解决的问题就是:可信问题,防窃听问题。
724 0
|
安全 数据安全/隐私保护 C++
C/C++ 使用 cryptopp 加密解密
CryptLib 是新西兰奥克兰大学的Peter Gutmann先生花费了将近五年时间开发而成的一个加密安全工具包,它基于传统的计算机安全模型,并涉及到一个安全核心,各种抽象化了的对象位于核心之上。CRYPTLIB利用此加密库不同层次的接口,可以很容易地为各种应用系统提供安全服务,如加/解密、数字签名、认证等。
550 0
|
数据安全/隐私保护 C语言
【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
157 0
【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
|
数据安全/隐私保护
[re入门]一个简单的加密程序的逆向破解与解密
[re入门]一个简单的加密程序的逆向破解与解密
275 0
[re入门]一个简单的加密程序的逆向破解与解密
|
算法 数据安全/隐私保护 C语言
【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密 | 非对称加密 | 散列函数 )
【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密 | 非对称加密 | 散列函数 )
217 0