维吉尼亚密码加解密实现(python)

维吉尼亚密码

原理

维吉尼亚密码(Vigenere)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。

下面给出一个例子

明文:come greatwall
密钥:crypto

首先,对密钥进行填充使其长度与明文长度一样。

明文comegreatwall
密钥cryptocryptoc

其次,查表得密文
维吉尼亚加密

明文:come greatwall
密钥:crypto
密文:efkt zferrltzn

加解密脚本

from string import ascii_uppercase, ascii_lowercasedef vigenere_encrypt(plaintext: str, key: str) -> str:ciphertext = ''key_index = 0for char in plaintext:if char in ascii_uppercase:# 计算偏移量key_char = key[key_index % len(key)]shift = ord(key_char) - ord('A')# 加密字符ciphertext += chr((ord(char) - ord('A') + shift) % 26 + ord('A'))key_index += 1elif char in ascii_lowercase:key_char = key[key_index % len(key)]shift = ord(key_char) - ord('a')# 加密字符ciphertext += chr((ord(char) - ord('a') + shift) % 26 + ord('a'))key_index += 1else:ciphertext += charreturn ciphertextdef vigenere_decrypt(ciphertext: str, key: str) -> str:plaintext = ''key_index = 0for char in ciphertext:if char in ascii_uppercase:# 计算偏移量key_char = key[key_index % len(key)]shift = ord(key_char) - ord('A')# 解密字符plaintext += chr((ord(char) - ord('A') - shift) % 26 + ord('A'))key_index += 1elif char in ascii_lowercase:# 计算偏移量key_char = key[key_index % len(key)]shift = ord(key_char) - ord('a')# 解密字符plaintext += chr((ord(char) - ord('a') - shift) % 26 + ord('a'))key_index += 1else:plaintext += charreturn plaintext

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法】普里姆算法解决修路问题

应用场景——修路问题 1.某地有 7 个村庄(A,B,C,D,E,F,G),现在需要修路把 7 个村庄连通 2.各个村庄的距离用边线表示(权),比如 A - …

ORM工具之SQLAlchemy

SQLAlchemy是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行。 SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQL…

从 Pandas 到 Polars 四十四:Polars 和 数据可视化库Seaborn

在我对Matplotlib感到沮丧并发表帖子时,我的朋友让我试试Seaborn库。近年来我一直在使用Altair,因此并没有过多考虑Seaborn。然而,Seaborn的新界面给我留下了深刻印象,并且我很高兴地发现,Seaborn将直接接受Polars的Da…

【web安全】权限漏洞之未授权访问

一.Jenkins未授权访问漏洞 步骤一:使用以下fofa语法进行搜索 port"8080" && app"JENKINS" && title"Dashboard [Jenkins]" 步骤二:进入执行页面http://xxx.xxx.xxx.xxx:xxxx/manage/script/index.php 执…

Linux下自动监控进程运行状态

目录 背景应用举例1、使用crontab脚本监控服务2、使用shell脚本监控服务2.1 编写自定义监控脚本2.2 运行脚本 背景 假设有一个服务需要长期运行,但可能会由于某种原因导致服务意外停止,不能及时发现,某天来到公司后发现出问题了才意识到服务…

(Qt) QThread 信号槽所在线程

文章目录 💁🏻前言💁🏻Code💁🏻‍♂️Code💁🏻‍♂️环境 💁🏻当前线程信号💁🏻‍♂️默认效果💁🏻‍♂️Qt::…

最新CSS3伪类和伪元素详解

第4章 伪类和伪元素 4.1结构伪类 E:first-child{},第一个元素 样式&#xff1a; p:first-child {color: red; } <div><p>Lorem ipsum</p><p>Dolor sit amet.</p> </div> 4.1.1nth-*伪类 以计数为基础的&#xff0c;默认情况下&…

探索下一代互联网协议:IPv6的前景与优势

探索下一代互联网协议&#xff1a;IPv6的前景与优势 文章目录 探索下一代互联网协议&#xff1a;IPv6的前景与优势**IPv6 的特点****IPv6的基本首部****IPv6的地址****总结** 互联网的核心协议&#xff1a;从IPv4到IPv6 互联网的核心协议IP&#xff08;Internet Protocol&#…

Docker Deskpot出现Docker Engine Stopped的解决历程

前提&#xff1a;我的操作系统是Win11家庭版, Docker Descktop下载的是最新版&#xff08;此时是4.30.0&#xff09; 出现了如图所示的问题“Docker Engine Stopped”,个人认为解决问题的关键是第四点&#xff0c;读者可以直接看第四点&#xff0c;如果只看第四点就成功解决&am…

python开发上位机 - PyCharm环境搭建、安装PyQt5及工具

目录 简介&#xff1a; 一、安装PyCharm 1、下载 PyCharm 2、PyCharm安装 1&#xff09;配置安装目录 2&#xff09;安装选项 3、问题及解决方法 二、安装PyQt5 1、打开 Pycharm&#xff0c;新建 Project 2、安装 pyqt5 3、安装很慢怎么办&#xff1f; 4、安装 pyq…

RHCSA第三次作业

磁盘管理及分区&#xff1a; [rootMYyyy ~]# fdisk /dev/sda [rootMYyyy ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 10G 0 disk └─sda1 8:1 0 9G 0 part sdb 8:16 0 30G 0 disk sdc …

docker 部署 mysql8

命令 docker run --restartalways --name mysql8 -v /data/mysql/conf:/etc/mysql -v /data/mysql/data:/var/lib/mysql -v /data/mysql/log:/var/log -v /data/mysql/mysql-files:/var/lib/mysql-files -p 3308:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql:8 \解释 --rest…

基于SpringBoot框架的企业财务管理系统设计与实现(论文+源码)_kaic

摘 要 在快速增长的信息时代&#xff0c;每个企业都在紧随其后&#xff0c;不断改进其办公模式。与此同时&#xff0c;各家企业的传统管理模式也逐步发生变化&#xff0c;政府和企业都将需要一个更加自动化和现代化的财务管理系统。这能够便利员工之间的信息交流和公司的工作…

day22回溯学习记录第一天- - -代码随想录

77.组合 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 思路:回溯的经典题目&#xff0c;回溯的整体结构类似于二叉树&#xff0c;如下图所示。据此图可知&#xff0c;采用递归是一种解决方法&#xff0c;在此引入…

定点数的运算

目录 1.定点数的移位运算 1.1算数移位 数学含义&#xff1a; 规律总结&#xff1a; 1.2逻辑移位 1.3循环移位 不带进位位 带进位位 2.定点数的加减运算 3.定点数的乘除运算 3.1原码 一位乘法 除法 3.2补码 一位乘法 除法 1.定点数的移位运算 1.1算数移位 数学…

Java日志框架

笔记学习原视频&#xff08;B站&#xff09;&#xff1a;全面深入学习多种java日志框架 目前常见日志框架有&#xff1a; JULLogbacklog4jlog4j2 目前常见的日志门面&#xff08;统一的日志API&#xff09;&#xff1a; JCLSlf4j 一、 老技术&#xff08;基本都弃用了&…

STM32——外部中断(EXTI)

目录 前言 一、外部中断基础知识 二、使用步骤 三、固件库实现 四、STM32CubeMX实现 总结 前言 外部中断&#xff08;External Interrupt&#xff0c;简称EXTI&#xff09;是微控制器用于响应外部事件的一种方式&#xff0c;当外部事件发生时&#xff08;如按键按下、传感器信号…

软件设计模式概述

模式的诞生 模式(Pattern)起源于建筑业而非软件业 模式之父——美国加利佛尼亚大学环境结构中心研究所所长Christopher Alexander&#xff08;克里斯托弗亚历山大&#xff09;博士 《A Pattern Language: Towns, Buildings, Construction》——253个建筑和城市规划模式。 他给出…

atsec增加Swift CSP评估资质

atsec信息安全评估员现已被Swift列为Swift客户安全计划&#xff08;CSP&#xff1a;Customer Security Programme&#xff09;认证评估员目录中的评估提供商&#xff0c;可以帮助全球金融机构评估其针对CSP强制性和咨询性控制的合规级别。在金融行业&#xff0c;Swift要求使用其…

MySQL的三大关键日志:Bin Log、Redo Log与Undo Log

MySQL的三大关键日志&#xff1a;Bin Log、Redo Log与Undo Log 1. Bin Log&#xff08;二进制日志&#xff09;2. Redo Log&#xff08;重做日志&#xff09;3. Undo Log&#xff08;回滚日志&#xff09; &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&…