# CryptographyLabs **Repository Path**: Hmount/cryptography-labs ## Basic Information - **Project Name**: CryptographyLabs - **Description**: 密码学实验学习. - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2022-09-19 - **Last Updated**: 2022-10-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, 密码学, C语言 ## README # 实验一、python-AES模块实现 ### 功能介绍 这个模块提供了一些方法进行AES128的加密和解密 **目标**支持多种工作模式和填充 **当前支持的工作模式:ECB** **当前支持的填充方式:None (意味着目前的输入字节长度只能是16的整数倍)** **(实验一要求的功能已完成)** 加密和解密结果均支持以 **文本、hex、二维矩阵**格式输出
**这个模块完全使用python原生库实现,无需安装第三方库** ### 目录结构 ``` ./AES128/Python3 ├── __pycache__ # python字节码保存目录 ├── AES.py # AES分组管理、模式管理及运算 ├── AK.py # 计算轮密钥 ├── MC.py # (逆)列混淆 ├── NS.py # (逆)字节代换 ├── SR.py # (逆)行变换 └── main.py # 加密解密展示、AES类使用示例 ``` # 实验二、 python-RSA模块实现 ### 功能介绍 这个模块用于RSA算法的加密和解密 **当前支持一定位数(包括2048)的公钥私钥生成** **大质数的生成采用miller_rabin判别法**
**模逆元的求解使用拓展欧几里得算法**
**明文、密文的求解采用了python内置的快速幂取模方法pow**
加密和解密结果均以hex编码格式输出, 但是utils中提供了hex编码和utf-8字符文本相互转换的函数
**这个模块完全使用python原生库实现,无需安装第三方库** ### 目录结构 ``` . ├── __pycache__ # python字节码保存目录 ├── RSA.py # 基于RSA算法的加密解密 ├── main.py # 加密解密展示、RSA类使用示例 └── utils.py # 一些数学和编码相关的工具函数 ``` # 实验三、 Hash长度扩展攻击 本次实验来自于SEED 实验室(https://seedsecuritylabs.org/),共需要完成如下4个小任务。通过这4个任务完成对一个服务器网站的 Hash 扩展攻击,并对 Hash 扩展攻击进行防御验证。 + 任务1:发送请求来列出所有文件 + 任务2:创建Padding + 任务3:长度扩展攻击 + 任务4:使用 HMAC 来抵御长度扩展攻击 **具体实验环境搭建请参考链接.** https://seedsecuritylabs.org/Labs_20.04/Crypto/ ### 目录结构 ``` . ├── Hash_Length_Ext.md # 实验过程记录 ├── __pycache__ # python字节码保存目录 ├── assets # 附件 ├── Labsetup # 实验环境docker文件夹 ├── hmac256.py # HMAC-256脚本 ├── length_ext.c # MAC-256长度拓展攻击脚本 └── length_ext # MAC-256长度拓展攻击脚本可执行文件 ``` # 实验四、 python-ElGamal数字签名模块实现 ### 功能介绍 这个模块模拟了ElGamal数字签名算法 **当前支持ElGamal一定位数的公钥对私钥生成** **大质数的生成采用miller_rabin判别法**
**模逆元的求解使用拓展欧几里得算法**
**签名和认证采用了python内置的快速幂取模方法pow**
### 目录结构 ``` . ├── __pycache__ # python字节码保存目录 ├── ElGamal.py # ElGamal数字签名算法实现 ├── main.py # 模块使用示例 └── utils.py # 辅助函数 ```