性质:本项目是BUAA -网络空间安全学院-2023年春季密码学实验课程大作业
作者:BUAA-网络空间安全学院2021级-21371445-刘征昊
概述:本项目采用面向对象 编程的方式对本学期实验代码进行整合以及完善,制作了个人 的密码学库
liuzh594Crypto
├── LICENSE
├── README.md
├── liuzh594Crypto # 包
│ ├── __init__.py
│ ├── basicMath # 基础数学库
│ │ ├── __init__.py
│ │ ├── ECC.py
│ │ ├── GF.py
│ │ ├── basic.py
│ │ └── type.py
│ ├── blockCipher # 分组密码学库
│ │ ├── __init__.py
│ │ ├── SM4.py
│ ├── digitalSignature # 数字签名库
│ │ ├── __init__.py
│ │ ├── SM2_SV.py
│ ├── hash # 哈希算法库
│ │ ├── __init__.py
│ │ ├── SM3.py
│ ├── pubkeyCipher # 公钥密码学库
│ │ ├── __init__.py
│ │ ├── RSA.py
│ │ ├── SM2.py
│ └── tests # 测试样例库
│ ├── __init__.py
│ ├── pic_original.bmp
│ ├── pic_original_CBC.bmp
│ ├── pic_original_ECB.bmp
│ └── tests.py
└── setup.py
支持欧拉算法、模逆运算、快速(模)幂(矩阵)运算、素数生成与检验和中国剩余定理等一系列密码学基础数学运算
支持椭圆曲线密码学所需的常见数学运算,如:椭圆曲线上的点的加减法和倍点运算,其中倍点运算支持double-and-add、NAF以及w-NAF三种方法
支持有限域GF(2^8)上的常见数学运算,如:四则运算、逆元、矩阵运算等
支持十六进制、字节串、字符串、整数、椭圆曲线上的点等变量类型之间的相互转化
SM4支持分组长度128比特,密钥长度128比特的分组密码加解密运算
支持基于ECB或CBC工作模式的对文件的加解密处理
支持杂凑函数为SM3(可替换)的SM2公钥加密算法
支持输出长度为256比特的消息摘要,消息摘要的输出类型包括十六进制字符串以及字节串两种类型
当然作为初学者,本项目只是基本完成了面向对象的思想,与真正完整的面向对象编程仍然有很大的差距,假期会继续学习,加深对面向对象编程的理解和掌握
python3 -m pip install liuzh594Crypto
python -m pip install liuzh594Crypto
对于 POSIX 用户(包括 macOS 和 Linux 用户)本指南中的示例假定使用了 [virtual environment/pyenv]。对于 Windows 用户,本指南中的示例假定在安装 Python 时选择了修改系统 PATH 环境变量。
在主程序部分可以根据测试者的需求,添加或减少注释函数进行部分测试
if __name__ == "__main__" :
"""
可以根据测试需求进行代码注释部分的添加与解除
"""
"""
basicMath测试样例
"""
basic_test ()
type_test ()
ECC_test ()
GF_test ()
"""
blockCipher测试样例
"""
SM4_test ()
"""
pubkeyCipher测试样例
"""
RSA_test ()
SM2_test ()
"""
hash测试样例
"""
SM3_test ()
"""
digitalSignature测试样例
"""
SM2_SV_text ()