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

如何用Python实现基于自定义字典映射的密码加解密功能

自定义替换加密/解密Python实现

常见问题排查

你之前代码运行异常大概率是因为使用了dict作为变量名,dict是Python内置的字典类关键字,覆盖后会导致字典相关功能异常,另外数字映射需要统一为字符串类型,避免加密后出现整数和字符串混合的情况,影响后续数据库存储。

完整实现代码

# 自定义加密映射,按需补全所有A-Z大写字母的对应规则
encrypt_map = {
    'A': 'O', 'B': 'P', 'C': 'J', # 此处省略其他字母映射,自行补全
    'Z': 'Z'
}

# 自动生成0-9数字倒序映射,统一使用字符串类型
for num in range(10):
    encrypt_map[str(num)] = str(9 - num)

# 自动生成解密映射,直接反转加密映射的键值对
decrypt_map = {cipher: plain for plain, cipher in encrypt_map.items()}

def encrypt(plain_text: str) -> str:
    """加密函数,输入明文返回密文"""
    # 若需要支持小写字母输入,可先统一转大写,不需要可删除下一行
    plain_text = plain_text.upper()
    cipher_chars = []
    for char in plain_text:
        cipher_chars.append(encrypt_map.get(char, char))
    return ''.join(cipher_chars)

def decrypt(cipher_text: str) -> str:
    """解密函数,输入密文返回明文"""
    plain_chars = []
    for char in cipher_text:
        plain_chars.append(decrypt_map.get(char, char))
    return ''.join(plain_chars)

使用示例

# 测试代码
print(encrypt("ABC123")) # 输出:OPJ876
print(decrypt("OPJ876")) # 输出:ABC123

可选优化方案

  • 若用于存储用户登录密码,不要使用可逆加密,直接使用bcrypt、argon2等单向加盐哈希算法,无需解密,验证时直接对比哈希值即可,安全性远高于自定义加密逻辑。
  • 若确实需要可逆加密存储敏感数据,建议使用标准对称加密算法如AES,可借助PyCryptodome库实现,不要使用自定义单表替换密码,这类密码很容易通过频率分析破解,安全性极低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:27:02