下载资源后端资源详情
sm.zip
大小:34.54KB
价格:34积分
下载量:0
评分:
5.0
上传者:m0_62534426
更新日期:2025-09-22

国密算法sm2/3/4实现

资源文件列表(大概)

文件名
大小
sm/SM实现#/
-
sm/SM实现#/SM实现/
-
sm/SM实现#/SM实现/.vscode/
-
sm/SM实现#/SM实现/.vscode/settings.json
62B
sm/SM实现#/SM实现/libgm-c-main/
-
sm/SM实现#/SM实现/libgm-c-main/.gitignore
27B
sm/SM实现#/SM实现/libgm-c-main/include/
-
sm/SM实现#/SM实现/libgm-c-main/include/common.h
1.82KB
sm/SM实现#/SM实现/libgm-c-main/include/sm2.h
3.13KB
sm/SM实现#/SM实现/libgm-c-main/include/sm3.h
1.14KB
sm/SM实现#/SM实现/libgm-c-main/include/sm4.h
5.39KB
sm/SM实现#/SM实现/libgm-c-main/Makefile
1.22KB
sm/SM实现#/SM实现/libgm-c-main/README.md
7.36KB
sm/SM实现#/SM实现/libgm-c-main/src/
-
sm/SM实现#/SM实现/libgm-c-main/src/common.c
2.22KB
sm/SM实现#/SM实现/libgm-c-main/src/sm2.c
30.02KB
sm/SM实现#/SM实现/libgm-c-main/src/sm3.c
4.17KB
sm/SM实现#/SM实现/libgm-c-main/src/sm4.c
10.96KB
sm/SM实现#/SM实现/libgm-c-main/src/test.c
8.37KB
sm/SM实现/
-
sm/SM实现/libgm-c-main/
-
sm/SM实现/libgm-c-main/.gitignore
27B
sm/SM实现/libgm-c-main/include/
-
sm/SM实现/libgm-c-main/include/common.h
487B
sm/SM实现/libgm-c-main/include/sm2.h
1.62KB
sm/SM实现/libgm-c-main/include/sm3.h
509B
sm/SM实现/libgm-c-main/include/sm4.h
1.35KB
sm/SM实现/libgm-c-main/Makefile
1.22KB
sm/SM实现/libgm-c-main/README.md
7.36KB
sm/SM实现/libgm-c-main/src/
-
sm/SM实现/libgm-c-main/src/common.c
553B
sm/SM实现/libgm-c-main/src/sm2.c
9.92KB
sm/SM实现/libgm-c-main/src/sm3.c
1.08KB
sm/SM实现/libgm-c-main/src/sm4.c
2.18KB
sm/SM实现/libgm-c-main/src/test.c
4.24KB

资源内容介绍

国密算法sm2/3/4实现
# 环境程序基于openssl-3.2.1编写,编译前需要设置`OPENSSL`环境变量指向openssl安装目录。# 编译```bashmake```# 说明## SM2数据格式可以参考《GB/T 35276-2017 信息安全技术 SM2密码算法使用规范》。```cint sm2_key_pair_new(unsigned char *pub, size_t *pub_len, unsigned char *pri, size_t *pri_len);int sm2_encrypt(unsigned char **out, size_t *out_len, const unsigned char *in, size_t in_len, const unsigned char *pub, size_t pub_len);int sm2_decrypt(unsigned char *out, size_t *out_len, const unsigned char *in, size_t in_len, const unsigned char *pri, size_t pri_len);int sm2_sign(unsigned char *sig, size_t *sig_len, const unsigned char *in, size_t in_len, const unsigned char *pri, size_t pri_len);int sm2_verify(const unsigned char *sig, size_t sig_len, const unsigned char *in, size_t in_len, const unsigned char *pub, size_t pub_len);SM2_SIG_CTX *sm2_sig_ctx_new(const unsigned char *key, size_t key_len, int is_pri);void sm2_sig_ctx_free(SM2_SIG_CTX *ctx);int sm2_sig_update(SM2_SIG_CTX *ctx, const unsigned char *in, size_t in_len);int sm2_sig_sign(SM2_SIG_CTX *ctx, unsigned char *sig, size_t *sig_len);int sm2_sig_verify(SM2_SIG_CTX *ctx, const unsigned char *sig, size_t sig_len);```### sm2_key_pair_new新建SM2密钥对。| 参数 | 类型 | 说明 || ------- | --------------- | --------------------------- || pub | unsigned char * | [out]用于接收公钥的缓冲区。 || pub_len | size_t * | [out]用于接收公钥长度。 || pri | unsigned char * | [out]用于接收私钥的缓冲区。 || pri_len | size_t * | [out]用于接收私钥长度。 |返回1表示成功,0表示失败。### sm2_encrypt加密。| 参数 | 类型 | 说明 || ------- | --------------------- | ------------------------------------- || out | unsigned char ** | [out]用于接收加密数据的缓冲区的指针。 || out_len | size_t * | [out]用于接收加密数据长度。 || in | const unsigned char * | 需要加密的数据。 || in_len | size_t | 需要加密的数据长度。 || pub | const unsigned char * | 公钥。 || pub_len | size_t | 公钥长度。 |返回1表示成功,0表示失败。### sm2_decrypt解密。| 参数 | 类型 | 说明 || ------- | --------------------- | ------------------------------------------------------------ || out | unsigned char * | [out]用于接收解密数据的缓冲区。需要的缓冲区大小不会超过需要加密的数据长度。 || out_len | size_t * | [out]用于接收解密数据长度。 || in | const unsigned char * | 需要解密的数据。 || in_len | size_t | 需要解密的数据长度。 || pri | const unsigned char * | 私钥。 || pri_len | size_t | 私钥长度。 |返回1表示成功,0表示失败。### sm2_sign签名。| 参数 | 类型 | 说明 || ------- | --------------------- | ------------------------------------------------------- || sig | unsigned char * | [out]用于接收签名的缓冲区。需要的缓冲区大小不会超过72。 || sig_len | size_t * | [out]签名长度。 || in | const unsigned char * | 需要签名的数据。 || in_len | size_t | 需要签名的数据长度。 || pri | const unsigned char * | 私钥。 || pri_len | size_t | 私钥长度。 |返回1表示成功,0表示失败。### sm2_verify验签。| 参数 | 类型 | 说明 || ------- | --------------------- | -------------------- || sig | const unsigned char * | 签名。 || sig_len | size_t | 签名长度。 || in | const unsigned char * | 需要验签的数据。 || in_len | size_t | 需要验签的数据长度。 || pub | const unsigned char * | 公钥。 || pub_len | size_t | 公钥长度。 |返回1表示成功,0表示失败。## SM3### sm3_digest摘要。| 参数 | 类型 | 说明 || ------ | --------------------- | --------------------------------------------------------- || md | unsigned char * | [out]用于接收哈希值的缓冲区。需要的缓冲区大小不会超过32。 || md_len | unsigned int * | [out]用于接收哈希值长度。 || in | const unsigned char * | 需要计算哈希值的数据。 || in_len | size_t | 需要计算哈希值的数据长度。 |返回1表示成功,0表示失败。## SM4### sm4_generate_key生成密钥。| 参数 | 类型 | 说明 || ---- | --------------- | ------------------------------------------------- || key | unsigned char * | [out]用于接收密钥的缓冲区。需要的缓冲区大小为16。 |返回1表示成功,0表示失败。### sm4_crypt加/解密。| 参数 | 类型 | 说明 || ------- | --------------------- | ------------------------------------------------------------ || out | unsigned char * | [out]用于接收加/解密数据的缓冲区。加密数据需要的缓冲区大小不会超过待加密数据长度加16,解密数据需要的缓冲区大小不会超过待解密数据长度。 || out_len | int * | [out]用于接收加/解密数据长度。 || in | const unsigned char * | 待加/解密数据。 || in_len | int | 待加/解密数据长度。 || mode | int | 模式。1-ECB;2-CBC。 || key | const unsigned char * | 密钥。 || iv | const unsigned char * | 模式为CBC时需要设置初始向量。 || enc | int | 是否为加密。0表示解密,其它表示加密。 |### 宏```c#define sm4_enc_max_size(size) ...#define sm4_dec_max_size(size) ...#define sm4_encrypt_ecb(out, out_len, in, in_len, key) ...#define sm4_decrypt_ecb(out, out_len, in, in_len, key) ...#define sm4_encrypt_cbc(out, out_len, in, in_len, key, iv) ...#define sm4_decrypt_cbc(out, out_len, in, in_len, key, iv) ...```

用户评论 (0)

发表评论

captcha

相关资源

来自pycharm的中文插件

安装它到pycharm上,使其的操作界面转变为中文RLFBDY009J

6.05MB29积分

公寓报修管理系统 JAVA+Vue.js+SpringBoot+MySQL

基于Vue.js和SpringBoot的公寓报修管理系统,分为用户前台和管理后台,可以给管理员、住户、维修人员角色使用,包括房间信息模块、维修申请模块、物品信息模块、请假信息模块和系统基础模块,项目编号T186。项目录屏:https://www.bilibili.com/video/BV1Fm421K7Pv启动教程:https://www.bilibili.com/video/BV1pW4y1P7GR项目讲解视频:https://space.bilibili.com/417412814/channel/collectiondetail?sid=2242844

10.75MB20积分

校园网上店铺系统 JAVA+Vue.js+SpringBoot+MySQL

基于Vue.js和SpringBoot的校园网上店铺系统,分为用户前台和管理后台,可以给管理员、商铺、普通用户角色使用,包括商铺管理模块、商品管理模块、公告管理模块、用户管理模块和系统基础模块,项目编号T187。项目录屏:https://www.bilibili.com/video/BV1Jb421e7xA启动教程:https://www.bilibili.com/video/BV1pW4y1P7GR项目讲解视频:https://space.bilibili.com/417412814/channel/collectiondetail?sid=2242844

34.6MB47积分

客户关系管理系统 JAVA+Vue.js+SpringBoot+MySQL

基于Vue.js和SpringBoot的客户关系管理系统,分为用户前台和管理后台,可以给管理员、员工角色使用,包括客户管理模块、客户积分模块、客户线索模块、沟通记录模块和系统基础模块,项目编号T188。项目录屏:https://www.bilibili.com/video/BV12s421g7rT启动教程:https://www.bilibili.com/video/BV1pW4y1P7GR项目讲解视频:https://space.bilibili.com/417412814/channel/collectiondetail?sid=2242844

14.42MB28积分