第一范文网 - 专业文章范例文档资料分享平台

GMSSL SM4测试过程及源码(ECB、CBC、CTR)

来源:用户分享 时间:2025/7/4 12:21:00 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

基于GMSSL的SM4测试过程及源码

1.SM4介绍

SM4算法,是由国家密码管理局于2012年发布,又名GMS4.0 。

相关标准为GM/T 0002-2012《SM4分组密码算法》。关于sm4的源码在github上有很多,但好多都不全,只有SM4的ECB模式,目前找到的比较全的SM4源码就是GMSSL中所实现的。

2.GMSSL介绍

GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法。项目由北京大学关志副研究员的密码学研究组开发维护,项目源码托管于github。

GMSSL不仅实现了所有的国密算法,还实现了国密的ssl版本---GMTLS。同时由于GMSSL是基于openssl的,还保持了openssl的基本功能,包括各种国际算法和ssl/TLS版本。

3.GMSSL裁剪

使用GMSSL的话就涉及到了裁剪,需要如下操作:

(1)在在config中添加 no-选项 ,有编译不过的,就添加,直到编译完成。例如:

./config --prefix=/usr/local/openssl no-pic no-poly1305 no-rsa no-aes no-rfc3779

(2)同时修改 Configure 中

307 $config{sdirs} = [ 317 ];

把没用到的删掉,在config ,make 可以编译出加密库libcrypto.so (3)其实如果使用 静态库编译我们的程序的话,就没必要裁剪了,因为使用静态库在编译的过程中只会把用到的接口链接到我们的程序中,不会额外增加我们程序的大小。

4.GMSSL SM4 接口使用

GMSSL中实现了SM4的所有模式下的源码,包括ECB、CBC、CFB、OFB和CTR。这篇文章主要讲解ECB、CBC和CTR这三种常用模式的接口测试。

4.1 ECB模式。

对称分组加密算法ECB模式的原理如下:

在GMSSL源码中SM4-ECB模式的源码实现是: crypto/sms4/sms4_ecb.c

主要涉及的接口为:

void sms4_set_encrypt_key(sms4_key_t *key, const unsigned char user_key[16]) void sms4_set_decrypt_key(sms4_key_t *key, const unsigned char user_key[16]) void sms4_ecb_encrypt(const unsigned char *in, unsigned char *out, const sms4_key_t *key, int enc) 加解密接口测试如下:

int sm4_ecb_enc_128bit(unsigned char *key, unsigned char *in_data, unsigned char *out_data) {

sms4_key_t enc_key;

sms4_set_encrypt_key(&enc_key, key);

sms4_encrypt(in_data, out_data, &enc_key);

return 0; }

int sm4_ecb_dec_128bit(unsigned char *key, unsigned char *in_data, unsigned char *out_data) {

sms4_key_t dec_key;

sms4_set_decrypt_key(&dec_key, key);

sms4_encrypt(in_data, out_data, &dec_key);

return 0; }

搜索更多关于: GMSSL SM4测试过程及源码(ECB、CBC、CTR) 的文档
GMSSL SM4测试过程及源码(ECB、CBC、CTR).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4zefd9bv3i2p7v43zg0p6rgfk15t3500h70_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top