当前位置: 首页 > java >正文

密码学实验:凯撒密码

密码学实验:凯撒密码

一、实验目的

  1. 掌握凯撒密码的数学原理:理解字符移位与模运算的结合,实现加解密算法。
  2. 理解暴力破解本质:通过穷举有限密钥空间,掌握利用语言特征破解密文的方法。
  3. 编程实践:用Python实现加解密逻辑与暴力破解脚本,提升密码学编程能力。

二、凯撒密码核心原理

2.1 字符置换

  • 无移位置换表

    小写abcdefghijklm
    大写ABCDEFGHIJKLM
    小写nopqrstuvwxyz
    大写NOPQRSTUVWXYZ
  • 移位加密示例(k=5)
    每个字母向前推移5位,如 a→Fb→G,明文 data 加密为 IFYF

2.2 数学模型:用公式定义加密逻辑

  • 字母数字化:将26个字母映射为0-25的整数(如 a=0b=1z=25)。
  • 加密公式
    [ c = (m + k) \mod 26 ]
    m:明文数字,c:密文数字,k:密钥,模26确保结果在字母表范围内)
  • 解密公式
    [ m = (c - k) \mod 26 ]

示例

  • 明文 data 对应数字序列:3, 0, 19, 0
  • 密钥 k=5 时,密文序列:(3+5)%26=8, (0+5)%26=5, (19+5)%26=24, (0+5)%26=5
  • 密文:I, F, Y, FIFYF

三、实验步骤与代码实现

3.1 手动加密

  • 任务:用学号末位作为密钥(如学号末位为7),加密明文:
    data security has evolved rapidly
  • 结果:手动计算得密文 khah zljbypaf ohz lcvsclk yhwpksf,与程序输出一致。

3.2 编程实现加解密

源代码:
在这里插入图片描述

验证结果
输入明文与密钥7,输出密文与手动计算一致,证明代码正确性。
在这里插入图片描述

四、暴力破解

4.1 破解原理:穷举攻击的核心逻辑

  • 明文空间扩展:包含大小写字母、数字、符号共65个字符,密钥范围0-64。
  • 破解思路:遍历所有密钥,解密后通过语言特征(如英文单词)筛选正确结果。
  • 例如:破解下面密文,由于每一行使用了不同的密钥,因此,请一次只对一行进行解密:
    qeFIP?eGSeECNNS,
    5coOMXXcoPSZIWoQI,
    avnl1olyD4l’ylDohww6DhzDjhuDil,
    z.GM?.cEQc. 70c.7KcKMKHA9AGFK,
    ?MFYp2pPJJUpZSIJWpRdpMFY,
    ZqH8sl5HtqHTH4s3lyvH5zH5spH4t pHzqHlH3l5K
    Zfbi,!tif!xpvme!qspcbcmz!fbu!nfA
    此时,明文空间为’ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?.’

4.2 暴力破解代码

alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?.'
ciphertext = input("请输入密文:")for key in range(len(alphabet)):# 对每个字符执行逆向移位,保留非字母字符plaintext = ''.join([alphabet[(alphabet.index(c) - key) % len(alphabet)] if c in alphabet else c for c in ciphertext])print(f"密钥{key:2d}: {plaintext}")  # 格式化输出便于查看

4.3 破解结果

密文行正确密钥明文
134I love my kitty
244My kitty loves me
36Together we’re happy as can be
432Though my head has suspicions
545That I keep under my hat
611Of what if I shrank to the size of a rat.
71Yeah, she would probably eat me.

关键技巧:通过观察连续英文单词(如lovetogether)快速定位正确密钥,无需逐行检查。
破解实例截图
第一行:
在这里插入图片描述

六、实验小结:传统密码的局限与现代密码的启示

  1. 技术收获

    • 掌握凯撒密码的加解密核心(移位+模运算)与暴力破解流程(穷举+语言分析)。
    • 学会处理扩展字符集(含数字、符号)的密码逻辑,提升代码鲁棒性。
  2. 安全启示

    • 凯撒密码的密钥空间仅70种可能,现代计算机可瞬间破解,证明密钥空间大小直接决定密码安全性
    • 传统密码依赖“算法保密”(如移位规则),而现代密码遵循“Kerckhoffs原则”(算法公开,仅密钥保密),安全性更可靠。
  3. 实践价值
    本次实验为学习对称加密(如AES)、非对称加密(如RSA)奠定了基础,理解“简单算法→复杂算法→现代密码学”的演进逻辑。

七、延伸思考:如果凯撒密码遇到现代密码学

  • 如何增强凯撒密码安全性?
    答:扩大密钥空间(如结合多表代换)、引入非线性变换(如仿射密码),但本质仍无法抵御现代攻击。
  • 暴力破解适用于所有密码吗?
    答:仅适用于密钥空间极小的密码(如凯撒密码),对AES-256等大密钥空间算法无效(穷举需超宇宙时间)。
http://www.xdnf.cn/news/6379.html

相关文章:

  • JESD204 ip核使用与例程分析(一)
  • PINN Poisson 1d
  • Vue3学习(组合式API——reactive()和ref()函数详解)
  • 基于大模型预测短暂性脑缺血发作(TIA)的技术方案大纲
  • aptitude 深度教程:从基础到生产实践
  • 紫外相机工作原理及可应用范围
  • 海外短剧系统:解锁全球内容消费新蓝海
  • mysql-Java手写分布式事物提交流程
  • RHCSA 考试操作手册(基于红帽企业 Linux 8/9 版本)​
  • AbstractErrorController简介-笔记
  • Flink 运维监控与指标采集实战(Prometheus + Grafana 全流程)
  • 人工智能、深度学习、机器学习的联系与区别
  • JMeter元件(元组)--简单介绍
  • 群晖NAS部署PlaylistDL音乐下载器结合cpolar搭建私有云音乐库
  • 基于Leaflet和天地图的免费运动场所WebGIS可视化-以长沙市为例
  • 嘉立创天猛星使用串口下载代码
  • 精益数据分析(61/126):移情阶段评分体系构建与实战案例解析
  • 解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-MCP大模型上下文解析
  • 鸿蒙OSUniApp 开发的一键分享功能#三方框架 #Uniapp
  • 集合进阶2
  • RTSP 播放器技术探究:架构、挑战与落地实践
  • VMware虚拟机 安装 CentOS 7
  • 全国各地区经纬度数据(包含省、市、县)
  • Java基础(多线程2)
  • 构建全栈 Web 应用的新选择:NextPy 技术详解与实战指南
  • 降本增效双突破:Profinet转Modbus TCP助力包布机产能与稳定性双提升
  • 初识Linux · IP分片
  • Bismark
  • 第三章:系统命令
  • 【技术原理】Linux 文件时间属性详解:Access、Modify、Change 的区别与联系