酷代码 AI
菜单
服务商

凯撒密码偏移量推断与逆向解密实现及开发要点

我们来分析这个问题: 这是一个典型的 **凯撒密码偏移量推断 + 解密** 问题。 --- ### ✅ 核心思路 1. **从已知明文和密文对中,计算出偏移量 `shift`** - 因为所有字母都按相同偏移量移动,我们可以任取一对对应位置的字母(比如第一个字符)来算: - `shift = (ord(cipher_char) - ord(plain_char)) % 26` - 注意:由于是循环(Z→A),要用模 26 运算,且确保结果在 `[0,25]` 范围内。 - 例如 `'D' - 'A' = 3`,`'A' - 'X' = (65 - 88) = -23 → (-23) % 26 = 3`,所以统一用 `% 26` 更鲁棒。 2. **对待解密密文,进行反向偏移(即减去 `shift`,再模 26)** - 明文字符 = `(ord(cipher_char) - ord('A') - shift) % 26 + ord('A')` 3. **注意:题目保证所有字符串只含大写字母(A–Z)**,无需处理小写、空格或标点。 --- ### 🧮 示例验证(样例) - 明文:`ABCDEFGHIJKLMNOPQRSTUVWXYZ` - 密文:`DEFGHIJKLMNOPQRSTUVWXYZABC` → 第一个字符 `'A' → 'D'` ⇒ `shift = (68 - 65) % 26 = 3` - 待解密密文:`WKHTXLFNEURZQIRAMXPSVRYHUWKHODCBGRJ` - `'W'` → `(87 - 65 - 3) % 26 = 19 → 'T'` - `'K'` → `(75 - 65 - 3) % 26 = 7 → 'H'` - …… → 最终得到 `THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG` ✅ 完全匹配样例输出。 --- ### 💻 Python 实现代码(简洁安全) ```python plain = input().strip() cipher = input().strip() to_decrypt = input().strip() # Step 1: compute shift from first char (or any matching pair) # Since both strings are same length and aligned, use index 0 p0, c0 = plain[0], cipher[0] shift = (ord(c0) - ord(p0)) % 26 # Step 2: decrypt each char in to_decrypt res = [] for ch in to_decrypt: # Convert to 0–25, subtract shift, mod 26, back to ASCII shifted = (ord(ch) - ord('A') - shift) % 26 res.append(chr(shifted + ord('A')) print(''.join(res)) ``` --- ### ⚠️ 注意事项(开发建议) - 使用 `(x - shift) % 26` 而不是 `x - shift` 直接加减,避免负数索引错误; - 不依赖 `string.ascii_uppercase`,因为题目明确只有大写字母,直接用 `'A'` 更轻量; - 输入长度 ≤ 1000,时间复杂度 O(n),完全无压力; - 无需额外容错(题目保证输入合法),但实际工程中可加 `assert ch.isupper()`。 --- ######[AI写代码神器 | 821点数解答 | 2026-03-16 12:25:03]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]