首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

国密算法sm2/3/4实现

后端 34.54KB 26 需要积分: 1
立即下载

资源介绍:

国密算法sm2/3/4实现
# 环境 程序基于openssl-3.2.1编写,编译前需要设置`OPENSSL`环境变量指向openssl安装目录。 # 编译 ```bash make ``` # 说明 ## SM2 数据格式可以参考《GB/T 35276-2017 信息安全技术 SM2密码算法使用规范》。 ```c int 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) ... ```

资源文件列表:

sm.zip 大约有35个文件
  1. sm/SM实现#/
  2. sm/SM实现#/SM实现/
  3. sm/SM实现#/SM实现/.vscode/
  4. sm/SM实现#/SM实现/.vscode/settings.json 62B
  5. sm/SM实现#/SM实现/libgm-c-main/
  6. sm/SM实现#/SM实现/libgm-c-main/.gitignore 27B
  7. sm/SM实现#/SM实现/libgm-c-main/include/
  8. sm/SM实现#/SM实现/libgm-c-main/include/common.h 1.82KB
  9. sm/SM实现#/SM实现/libgm-c-main/include/sm2.h 3.13KB
  10. sm/SM实现#/SM实现/libgm-c-main/include/sm3.h 1.14KB
  11. sm/SM实现#/SM实现/libgm-c-main/include/sm4.h 5.39KB
  12. sm/SM实现#/SM实现/libgm-c-main/Makefile 1.22KB
  13. sm/SM实现#/SM实现/libgm-c-main/README.md 7.36KB
  14. sm/SM实现#/SM实现/libgm-c-main/src/
  15. sm/SM实现#/SM实现/libgm-c-main/src/common.c 2.22KB
  16. sm/SM实现#/SM实现/libgm-c-main/src/sm2.c 30.02KB
  17. sm/SM实现#/SM实现/libgm-c-main/src/sm3.c 4.17KB
  18. sm/SM实现#/SM实现/libgm-c-main/src/sm4.c 10.96KB
  19. sm/SM实现#/SM实现/libgm-c-main/src/test.c 8.37KB
  20. sm/SM实现/
  21. sm/SM实现/libgm-c-main/
  22. sm/SM实现/libgm-c-main/.gitignore 27B
  23. sm/SM实现/libgm-c-main/include/
  24. sm/SM实现/libgm-c-main/include/common.h 487B
  25. sm/SM实现/libgm-c-main/include/sm2.h 1.62KB
  26. sm/SM实现/libgm-c-main/include/sm3.h 509B
  27. sm/SM实现/libgm-c-main/include/sm4.h 1.35KB
  28. sm/SM实现/libgm-c-main/Makefile 1.22KB
  29. sm/SM实现/libgm-c-main/README.md 7.36KB
  30. sm/SM实现/libgm-c-main/src/
  31. sm/SM实现/libgm-c-main/src/common.c 553B
  32. sm/SM实现/libgm-c-main/src/sm2.c 9.92KB
  33. sm/SM实现/libgm-c-main/src/sm3.c 1.08KB
  34. sm/SM实现/libgm-c-main/src/sm4.c 2.18KB
  35. sm/SM实现/libgm-c-main/src/test.c 4.24KB
0评论
提交 加载更多评论
其他资源 来自pycharm的中文插件
安装它到pycharm上,使其的操作界面转变为中文 RLFB DY009J
公寓报修管理系统 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
公寓报修管理系统 JAVA+Vue.js+SpringBoot+MySQL 公寓报修管理系统 JAVA+Vue.js+SpringBoot+MySQL 公寓报修管理系统 JAVA+Vue.js+SpringBoot+MySQL
校园网上店铺系统 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
校园网上店铺系统 JAVA+Vue.js+SpringBoot+MySQL 校园网上店铺系统 JAVA+Vue.js+SpringBoot+MySQL 校园网上店铺系统 JAVA+Vue.js+SpringBoot+MySQL
客户关系管理系统 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
客户关系管理系统 JAVA+Vue.js+SpringBoot+MySQL 客户关系管理系统 JAVA+Vue.js+SpringBoot+MySQL 客户关系管理系统 JAVA+Vue.js+SpringBoot+MySQL
websocket进行压力测试的jmeter脚本,以及固定qps的http压力测试
websocket进行压力测试的jmeter脚本,以及固定qps的http压力测试
使用 Compose 实现多屏幕导航
使用 Compose 实现多屏幕导航
Redis官方提供的一款Redis可视化管理工具Redis Insight安装包
Redis Insight是由Redis Labs开发的官方可视化工具,旨在简化开发人员和管理员对Redis实例的管理任务。 Redis Insight的主要功能和特点包括: 可视化界面:提供了一个直观的用户界面,使用户能够轻松地查看和管理Redis数据。它以图形方式显示key-value对、数据结构等信息,使用户更容易理解和操作数据。 监控和指标:允许用户监控Redis服务器的关键性能指标,如内存使用情况、每秒执行的命令数、延迟等。通过监控这些指标,用户可以及时发现潜在的性能问题并进行优化。 实时命令和日志:提供实时的命令执行信息和日志查看功能,这对于故障排除和调试非常有用。 数据探索:用户可以使用RedisInsight探索Redis数据,通过GUI界面方便地查看数据结构、进行搜索、排序和筛选等操作。 备份和恢复:允许用户对Redis数据进行备份,并在需要时进行恢复,这对于数据恢复和维护非常重要。 安全性:提供身份验证和授权机制,以确保Redis实例的安全性。用户可以设置访问控制和管理用户角色。
BookSaw图书商城
Web全栈技术开发