维吉尼亚密文解密小程序

news2024/12/26 11:52:01

维吉尼亚密文解密小程序

这几天在看CTF相关的课程,涉及到古典密码学和近代密码学还有现代密码学。自己编了一个解密小程序。

Vigenere 维吉尼亚密码

维吉尼亚是多表替换密码中比较典型的代表,维吉尼亚密码是在凯撒密码基础上产生的一种加密方法, 它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26行及26列的字母表。另外,维吉尼亚密码必须有一个密钥,这个密钥由字母组成,最少一个,最多可与明文字母数量相等。

现有明文:vigenere和密钥:Abc(不区分大小写)

首先,密钥长度需要与明文长度相同,如果少于明文长度,则重复拼接直到相同。本例中,明文长度为3 个字母(非字母均被忽略),密钥会被程序补全为"abcabcab"。

  • 维吉尼亚密码只对字母进行加密,不区分大小写,若文本中出现非字母字符会原样保留。
  • 如果输入多行文本,每行是单独加密的。

密文:vjieogrf

源码如下:

# 维吉尼亚密码解密
import tkinter as tk
from tkinter import ttk

def decrypt_vigenere():
    content = content_entry.get()
    key = key_entry.get()
    flag = ''
    key_to_num = [ord(k) - 97 for k in key.lower()]
    for i in range(len(content)):
        if content[i].islower():
            flag += chr((ord(content[i]) - 97 - key_to_num[i % len(key)]) % 26 + 97)
        elif content[i].isupper():
            flag += chr((ord(content[i]) - 65 - key_to_num[i % len(key)]) % 26 + 65)
        else:
            flag += content[i]
    decrypted_entry.delete(0, tk.END)  # 清空解密结果框
    decrypted_entry.insert(0, flag)  # 在解密结果框中插入解密后的文本

# 创建 GUI 窗口
window = tk.Tk()
window.title("维吉尼亚密文解密小程序 微信公众号--强壮Python")

# 创建控件
content_label = ttk.Label(window, text="密 文:")
content_entry = ttk.Entry(window, width=60)
key_label = ttk.Label(window, text="密 钥:")
key_entry = ttk.Entry(window, width=60)
decrypted_label = ttk.Label(window, text="解密输出:")
decrypted_entry = ttk.Entry(window, width=60)

# 布局控件
content_label.grid(row=0, column=0, sticky="w")
content_entry.grid(row=0, column=1)
key_label.grid(row=1, column=0, sticky="w")
key_entry.grid(row=1, column=1)

decrypted_label.grid(row=3, column=0, sticky='w')
decrypted_entry.grid(row=3, column=1)
decrypt_button = ttk.Button(window, text="解 密", command=decrypt_vigenere)
decrypt_button.grid(row=4, column=0, columnspan=2)

# 运行窗口
window.mainloop()

运行结果如下:
在这里插入图片描述

备注:GUI界面由AI生成。

请关注并转发我的微信公众号!

公众号

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

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

相关文章

床上用品跨境电商:拥有沃尔玛1P特权的商家享有哪些显著优势?

在全球化的背景下,跨境电商对床上用品行业至关重要。沃尔玛因其品牌影响力、客户资源及物流体系在跨境电商平台中脱颖而出。拥有沃尔玛1P特权的商家享有更多曝光机会和独家优惠。那么,这些特权商家具体有哪些优势呢? 沃尔玛1P特权商家在曝光率上具有显著…

行业案例 | 智能终端设备的数据基础从哪儿来?

智能终端的快速发展让我们在许多科幻电影中看到的“未来场景”正在一步步变为现实:智能家居正在解放我们的双手,工业机器人让生产效率倍增,智能穿戴设备让我们便利地感知自身与外部的连结……然而,要想让万物“智联”,…

能力再升级 分贝通拥抱全场景数电票时代

——接收、入帐、归档,一个平台管理更轻松 分贝通上线机票数电票行程单,从开票、接收、对账入账和归档,全流程无纸化、线上化,告别了诸多麻烦,全面拥抱全场景数电票时代。 开票,告别麻烦沟通:一…

封装图片占位图组件

<laze-image class="image" :url="item.image" :game_name="item.game_name" :placeholder="require(@/static/images/common/placeholder.png)"></laze-image> 1.通过调用组件实现 先加载预览图片,再加载真实的图片 2…

【python】python入门day1

python入门 Python解析器Python注释Python中的变量&#xff08;重点&#xff09;练习&#xff1a;1、用python的print函数描述一段对话2、与计算机模拟一段对话&#xff0c;并且最终计算机需要将输入的内容全部输出3、模拟两个对话场景(根据提示输入内容&#xff0c;并且在后续…

提升红色展厅内容质量,讲好红色故事新篇章!

在当今数字化技术浪潮的推动下&#xff0c;借助多媒体技术的展厅&#xff0c;将红色文化的魅力推向了新的高度。然而&#xff0c;技术的运用仅仅是展厅设计方案中的冰山一角&#xff0c;内容制作作为方案落地的核心环节&#xff0c;其质量直接决定了红色文化展厅的展示效果和观…

说点智驾领域的实话!感知|定位|规划控制|就业……

你们有没有一种感觉&#xff0c;近几年自动驾驶技术栈迭代太快&#xff0c;自己稍不留神就与当下主流技术产生脱节了。 其实说实话&#xff0c;并非只有你如此&#xff0c;行业内的工程师都有类似感受。 智能驾驶行业交流群&#xff1a;点击进 分享几个我们最近聊天中的几位朋…

机票、火车票,YonSuite让企业支出笔笔可控

在数字化浪潮的推动下&#xff0c;企业的商旅管理正迎来一场深刻变革。传统的手动预订、报销模式已无法满足现代企业对效率和成本控制的双重要求。YonSuite商旅费控&#xff0c;作为一款领先的企业商旅管理平台&#xff0c;正以其独特的优势&#xff0c;帮助企业实现机票、火车…

2021年12月电子学会Python编程等级考试一级真题及答案

2021年12月Python一级真题 一、选择题 1.昨天的温度是5摄氏度&#xff0c;今天降温7摄氏度&#xff0c;今天的温度是多少摄氏度&#xff1f;( D ) A.12 B.7 C.2 D.-2 2.分析下面程序&#xff0c;关于程序说法正确的是&#xff1f;( D ) x1"11" x2"12…

什么牌子的开放式耳机质量好?五大优质机型,新手必看!

耳机的应用场景越来越多&#xff0c;各种类型的耳机开石出现&#xff0c;开放式耳机就是其中一种。从最初的单一音效到现在的高清晰度解析&#xff0c;开放式耳机已经是非常成熟的产品。耳机不仅音质纯净&#xff0c;佩戴起来也极为舒适&#xff0c;无论你身在何处&#xff0c;…

msvcp120.dll丢失的7种解决方法,教你如何快速修复msvcp120.dll文件

一、msvcp120.dll 缺失的具体表现 应用程序启动失败 当系统中缺失 msvcp120.dll 文件时&#xff0c;最直接的后果是依赖该文件的程序无法正常启动。据不完全统计&#xff0c;超过70%的基于 Visual C 2013 开发的应用程序在启动时会检查 msvcp120.dll 的存在。缺失此文件会导致…

安卓免费短剧大全v1.0.2/全部无需VIP实时更新全平台短剧

在当今社会&#xff0c;时间成为了许多人最为宝贵的资源。忙碌的工作与繁重的日常事务&#xff0c;常常让我们难以拨出时间沉浸于长篇大幅的影视作品中。对于那些热爱剧情、渴望在生活中点缀一抹戏剧色彩的朋友们而言&#xff0c;这无疑是一种挑战。 然而&#xff0c;随着免费…

独立接口面向对象设计

使用面向对象的编程思想&#xff0c;来进行独立接口面向对象的设计&#xff0c;一个接口测试对应一个类&#xff0c;这样后面做框架也比较规范一些。 类定义包含类的属性和类的方法。 类属性包含接口访问地址和接口测试数据 类方法包含测试方法 1、V1.0 实现一组正常注册数据…

从环型到树型:多种网络拓扑结构的优缺点及应用

网络拓扑作为网络设计的基础&#xff0c;对于网络的性能、可靠性和扩展性起着重要作用。作为网络通信工程师&#xff0c;我们不仅需要了解网络拓扑的基本概念&#xff0c;还需深入掌握其在实际网络设计中的应用。本文将详细介绍网络拓扑&#xff0c;包括物理拓扑、逻辑拓扑&…

1Panel开源面板项目GitHub Star数量突破20,000!

截至2024年6月25日9:00&#xff0c;FIT2CLOUD飞致云旗下开源项目——1Panel开源Linux服务器运维管理面板GitHub Star数超过20,000个&#xff01; 继Halo和JumpServer之后&#xff0c;1Panel成为飞致云旗下第三个GitHub Star数量超过20,000个的开源项目&#xff0c;也是飞致云旗…

【数据分享】《国际统计年鉴》1996-2022

公众号新功能 目前公众号新增以下等功能 1、处理GIS出图、Python制图、区位图、土地利用现状图、土地利用动态度和重心迁移图等等 2、核密度分析、网络od分析、地形分析、空间分析等等 3、地理加权回归、地理探测器、生态环境质量指数、地理加权回归模型影响因素分析、计算…

Typora 更换皮肤

typora 下载激活 上面的链接已经讲了如何下载激活typora工具,本篇说一下如何给typora换肤 typora 中文官网 进入官网,在整体界面布局的上方找到主题 下面以其中一个主题为例,跟换主题皮肤 下载该主题 找到旁边的release 下拉窗体,在Assets里面找这种压缩包,通过名字很容易区…

Vue_cli搭建过程项目创建

概述 vue-cli 官方提供的一个脚手架&#xff0c;用于快速生成一个 vue 的项目模板&#xff1b;预先定义 好的目录结构及基础代码&#xff0c;就好比咱们在创建 Maven 项目时可以选择创建一个 骨架项目&#xff0c;这个骨架项目就是脚手架&#xff0c;我们的开发更加的快速&am…

RedHat9 | RAID配置与管理

一、实验环境 1、RAID简介 RAID&#xff08;Redundant Array of Independent Disks&#xff09;&#xff0c;即独立磁盘冗余阵列&#xff0c;是一种数据存储技术。它通过将多个独立的磁盘驱动器组合起来&#xff0c;形成一个逻辑上的整体&#xff0c;从而提高数据存储的性能、…

国内AI行业对GPU算力的需求有多大?

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;算力作为支撑其持续进步的核心动力&#xff0c;在国内的重要性日益凸显&#xff0c;无论是海外还是国内&#xff0c;AI算力行业都呈现出蓬勃发展的态势&#xff0c;而国内对于AI算力的需求更是呈现出爆发式的…