维吉尼亚密码

维吉尼亚密码属于多表代换密码

其中A<-->0,B<-->1,...,Z<-->25,则每个密钥K相当于一个长度为m的字母串,称为密钥字。维吉尼亚密码一次加密m个明文字母。

示例:设m=6,密钥字为"CIPHER",对应数字串K=(2,8,15,7,4,17)。要加密明文为:thiscrypto,则
则相应的密文为:VPXZGIAXIV

解密时,使用相同的密钥字进行逆运算即可。

可以看出,维吉尼亚密码的密钥空间为26^m。

加密:

python 复制代码
Plaintext = 'THISCRYPTO'#字母需要大写
K = [2,8,15,7,4,17]

#print(K)#密钥

Ciphertext = ''
for i in range(len(Plaintext)):
    M_i = ord(Plaintext[i]) - 65 
    K_i = K[i%len(K)]
    C_i = (M_i+K_i)%26
    Ciphertext += chr(C_i+ 65) 
print(Ciphertext)

解密:

python 复制代码
Ciphertext = 'VPXZGIAXIV'   
K = [2,8,15,7,4,17]

Plaintext = ''
for i in range(len(Ciphertext)):
    C_i = ord(Ciphertext[i]) -65 
    K_i = K[i%len(K)]
    M_i = (C_i - K_i)%26
    Plaintext += chr(M_i+ 65) 
print(Plaintext)
相关推荐
2301_816660211 天前
PHP怎么处理Eloquent Attribute Inference属性推断_Laravel从数据自动推导类型【操作】
jvm·数据库·python
第一程序员1 天前
数据工程 pipelines 实践
python·github
知行合一。。。1 天前
Python--05--面向对象(属性,方法)
android·开发语言·python
郝学胜-神的一滴1 天前
深度学习必学:PyTorch 神经网络参数初始化全攻略(原理 + 代码 + 选择指南)
人工智能·pytorch·python·深度学习·神经网络·机器学习
qq_372154231 天前
Go 中自定义类型与基础类型的显式转换规则详解
jvm·数据库·python
LiAo_1996_Y1 天前
CSS如何实现文字渐变效果_通过background-clip实现艺术字
jvm·数据库·python
2401_887724501 天前
CSS如何让表单在手机端友好展示_利用Flexbox实现堆叠排版
jvm·数据库·python
zhangchaoxies1 天前
Layui轮播图(carousel)怎么设置自动播放间隔
jvm·数据库·python
FreakStudio1 天前
无硬件学LVGL:基于Web模拟器+MiroPython速通GUI开发—布局与空间管理篇
python·单片机·嵌入式·面向对象·并行计算·电子diy
qq_372906931 天前
如何在 Vuetify 中可靠捕获 Chip 关闭事件(包括键盘触发)
jvm·数据库·python