You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python3循环创建维吉尼亚密码所需的二维列表

解决维吉尼亚密码矩阵创建的问题

嘿,我明白你卡在维吉尼亚密码矩阵创建这一步的苦恼了!既然你已经有了能正常运行的shift函数,那生成这个二维列表其实比你想的简单~

核心思路

维吉尼亚密码矩阵的本质就是26行字母表,每一行都是上一行循环左移一位的结果。第一行是原始字母表(A-Z),第二行是B-Z+A,第三行是C-Z+A+B,以此类推。基于你已有的shift函数,我们只需要从原始字母表开始,反复调用shift生成每一行,然后把所有行收集到一个二维列表里就行。

代码实现(适配你的shift函数)

假设你的shift函数是接收一个字母列表,将首元素移到末尾并返回新列表(比如shift(['A','B',...,'Z'])返回['B',...,'Z','A']),那可以这样写:

import string

# 这里是你已经实现好的shift函数(示例,可替换成你自己的)
def shift(alphabet_list):
    return alphabet_list[1:] + [alphabet_list[0]]

# 1. 生成原始字母表(大写,按需换成string.ascii_lowercase用小写)
original_alphabet = list(string.ascii_uppercase)

# 2. 初始化维吉尼亚矩阵
vigenere_matrix = []

# 3. 添加第一行(原始字母表)
current_row = original_alphabet.copy()
vigenere_matrix.append(current_row)

# 4. 生成剩下的25行
for _ in range(25):
    current_row = shift(current_row)
    vigenere_matrix.append(current_row)

# 可选:打印矩阵验证效果
for row in vigenere_matrix:
    print(''.join(row))

如果你的shift函数处理的是字符串

要是你的shift函数是直接操作字符串(比如shift("ABC...Z")返回"BC...ZA"),那代码可以更简洁:

import string

def shift(alphabet_str):
    return alphabet_str[1:] + alphabet_str[0]

original_alphabet = string.ascii_uppercase
vigenere_matrix = [original_alphabet]
current_row = original_alphabet

for _ in range(25):
    current_row = shift(current_row)
    vigenere_matrix.append(current_row)

# 验证打印
for row in vigenere_matrix:
    print(row)

这样生成的矩阵完全符合维吉尼亚密码的要求,后续加密解密时,就可以通过明文和密钥的字母索引,在矩阵中快速定位对应的字符啦~

内容的提问来源于stack exchange,提问作者GarrukApex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:02:41