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

如何用Python实现双密钥自定义替换的维吉尼亚风格加密?

维吉尼亚加密工具实现问题解答

结论

完全可以实现,无需硬编码完整26字母列表就能完成你描述的所有双密钥加密逻辑。

实现方案

Python内置的ord()(返回字符对应的ASCII编码值)和chr()(将ASCII编码值转回对应字符)函数可以直接完成所有字母映射、偏移计算,不需要提前预定义a-z的完整列表:

  • 小写字母的ASCII编码范围固定为ord('a')(97)到ord('z')(122),大写字母范围为ord('A')(65)到ord('Z')(90),所有字母的位置计算都可以基于这个范围完成。
  • 你描述的双密钥逻辑核心实现示例如下,无任何硬编码的字母表:
def encrypt_single_char(plain_char, digit_key, alpha_key_char):
    # 计算字母类密钥的偏移值
    alpha_offset = ord(alpha_key_char.lower()) - ord('a')
    # 叠加数字类密钥的偏移,模26保证结果落在字母范围内
    total_offset = (digit_key + alpha_offset) % 26
    # 区分大小写处理
    base_code = ord('a') if plain_char.islower() else ord('A')
    plain_offset = ord(plain_char) - base_code
    cipher_offset = (plain_offset + total_offset) % 26
    return chr(base_code + cipher_offset)

如果需要用数字密钥生成自定义乱序替换表(而非单纯的线性偏移),也可以动态生成字母表再打乱,同样不需要手动硬写26个字母:

import random
# 数字密钥作为随机种子,保证每次生成的替换规则一致
random.seed(digit_key)
# 动态生成小写字母列表
custom_alphabet = [chr(ord('a') + i) for i in range(26)]
# 打乱生成自定义替换表
random.shuffle(custom_alphabet)

其他说明

这种实现方式还可以很方便的扩展特殊字符跳过、大小写保留等适配逻辑,可维护性比硬编码字母表更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:48:00