liuzhCrypto Python 库

项目介绍

  • 性质:本项目是BUAA-网络空间安全学院-2023年春季密码学实验课程大作业

  • 作者:BUAA-网络空间安全学院2021级-21371445-刘征昊

  • 概述:本项目采用面向对象编程的方式对本学期实验代码进行整合以及完善,制作了个人的密码学库

  • 支持github和PyPI:latest release请关注Github

项目目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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

项目功能

项目特色

  • 面向对象的编程方式

    • 当然作为初学者,本项目只是基本完成了面向对象的思想,与真正完整的面向对象编程仍然有很大的差距,假期会继续学习,加深对面向对象编程的理解和掌握
  • 编写大量注释,便于使用与理解

    • 详情见代码
  • 支持算法错误检查:

    • 密钥长度检查
    • 算法内部错误
    • … …
  • 对函数接口变量进行了类型指定, 支持输入类型检查

  • 提供大量测试样例,覆盖功能全面

  • 使用setup.py对项目文件进行了打包

项目安装:

  • mac/Linux:

    1
    python3 -m pip install liuzh594Crypto
  • windows:

    1
    python -m pip install liuzh594Crypto
    • 对于 POSIX 用户(包括 macOS 和 Linux 用户)本指南中的示例假定使用了 [virtual environment/pyenv]。对于 Windows 用户,本指南中的示例假定在安装 Python 时选择了修改系统 PATH 环境变量。

项目样例

  • 源码详见完整版测试样例

  • 在主程序部分可以根据测试者的需求,添加或减少注释函数进行部分测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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()

写在最后

  • 本项目的工作量主要来自于

    • 项目库的搭建
    • 文档的编写
    • 代码的整合
    • 函数接口设置
    • 错误处理
    • 测试样例
    • 注释
    • … …
  • 本项目已上传至github

  • 本项目已上传至PyPI