my crypto python package in 2023
Project description
liuzhCrypto Python 库
项目介绍
-
性质:本项目是BUAA-网络空间安全学院-2023年春季密码学实验课程大作业
-
作者:BUAA-网络空间安全学院2021级-21371445-刘征昊
-
概述:本项目采用面向对象编程的方式对本学期实验代码进行整合以及完善,制作了个人的密码学库
-
支持github和PyPI:latest release请关注Github
项目目录结构
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)上的数学运算
-
支持有限域GF(2^8)上的常见数学运算,如:四则运算、逆元、矩阵运算等
-
-
本密码学库涉及到的类型转换等操作
-
自定义了一系列本项目其他文件所需的变量类型
-
支持十六进制、字节串、字符串、整数、椭圆曲线上的点等变量类型之间的相互转化
-
-
-
对称密码学/分组密码学库
-
SM4分组密码
-
SM4支持分组长度128比特,密钥长度128比特的分组密码加解密运算
-
支持SM4的ECB和CBC的分组密码工作模式
-
支持基于ECB或CBC工作模式的对文件的加解密处理
-
-
-
非对称密码学/公钥密码学库
-
RSA公钥密码
-
支持RSA密钥参数的生成
-
支持RSA的加解密运算
-
-
SM2椭圆曲线公钥密码:公钥加密算法
-
支持杂凑函数为SM3(可替换)的SM2公钥加密算法
-
-
-
哈希算法/杂凑函数库
-
SM3密码杂凑算法
-
支持输出长度为256比特的消息摘要,消息摘要的输出类型包括十六进制字符串以及字节串两种类型
-
支持对文件的消息摘要生成
-
-
-
数字签名算法
-
SM2椭圆曲线公钥密码:数字签名算法
-
支持基于椭圆曲线的数字签名算法SM2
-
-
项目特色
-
面向对象的编程方式
-
当然作为初学者,本项目只是基本完成了面向对象的思想,与真正完整的面向对象编程仍然有很大的差距,假期会继续学习,加深对面向对象编程的理解和掌握
-
-
编写大量注释,便于使用与理解
-
详情见代码
-
-
支持算法错误检查:
-
密钥长度检查
-
算法内部错误
-
... ...
-
-
对函数接口变量进行了类型指定, 支持输入类型检查
-
提供大量测试样例,覆盖功能全面
-
使用setup.py对项目文件进行了打包
项目安装:
-
mac/Linux:
python3 -m pip install liuzh594Crypto
-
windows:
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()
写在最后
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file liuzh594crypto-5.9.4.999.999.tar.gz
.
File metadata
- Download URL: liuzh594crypto-5.9.4.999.999.tar.gz
- Upload date:
- Size: 22.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c11dd0b14032eb90cca6ebd196325e1f318dd3f54b431aa8d28bfabb7a309de0 |
|
MD5 | 0c0171ea86f5480c71c81f411e480062 |
|
BLAKE2b-256 | 689f51b167536076cdc9ac2f77ffef8243d95ab0ee450ff5153607757549217a |
File details
Details for the file liuzh594Crypto-5.9.4.999.999-py3-none-any.whl
.
File metadata
- Download URL: liuzh594Crypto-5.9.4.999.999-py3-none-any.whl
- Upload date:
- Size: 26.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7c20ea418639096feb0efb0334f0b6ba2d70347bdff41624893bf0eef891f16 |
|
MD5 | 092f894a52ded2949dceff73dffa3144 |
|
BLAKE2b-256 | bc29c619b3ab02073d5ace5acd939fb0020af5220ff17730a9fa96d33af8c2c2 |