NickYan7 / sm9_sign

SM9 signature & verify.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SM9_Signature_Python

国密 SM9 数字签名及验证签名算法的 Python 代码实现,基于 GmSSL 库编写。

基于 Python 的数字签名软件编写与实现

GmSSL 是一个开源的密码工具箱。基于 GmSSL 库所提供的底层模块,包括椭圆曲线、配对、有限域模块,针对接口层与功能层对数字签名软件进行编写实现。

🔗 http://gmssl.org/docs/sm9-cn.html

功能

由用户输入其身份标识(可以是身份证号、电话号码、电子邮箱地址等信息),然后调用 SM9 系统接口生成所需要的签名主密钥、用户加密私钥等。接着由用户决定对输入消息进行签名或选择具体文件进行签名(若选择具体文件进行签名,需要提供完整的程序路径)。

程序接收到用户输入后,调用 SM9 签名模块进行数字签名处理。最后验证签名部分传入由数字签名模块返回的返回值作为参数,调用 SM9 功能层进行验证签名。

辅助函数

  1. SM3 密码杂凑算法是 SM9 算法中数字签名算法调用的主要杂凑算法。

  2. 随机数模块调用国密局批准的随机数发生器。

程序测试与记录

程序测试主要选取用户输入的字符串、普通文本文件、可执行程序三项作为签名对象。

测试环境:

macOS Mojave 10.14.6; 内存 16GB; CPU Intel Core i5-8279U

测试用例的椭圆曲线方程是:
y^2 = x^3 + 3

若干次测试后,对于用户输入消息的签名耗时可控制在 0.1s 内,验证签名的耗时可控制在 0.4s 内,性能较为稳定。

About

SM9 signature & verify.


Languages

Language:Python 100.0%