SM9算法C++实现系列目录:
- 基于JPBC的SM9算法的java实现与测试
- 国密SM9算法C++实现之0:源码下载地址
- 国密SM9算法C++实现之一:算法简介
- 国密SM9算法C++实现之二:测试工具
- 国密SM9算法C++实现之三:椭圆曲线接口、参数初始化
- 国密SM9算法C++实现之四:基本功能函数与KGC接口的实现
- 国密SM9算法C++实现之五:签名验签算法
- 国密SM9算法C++实现之六:密钥封装解封算法
- 国密SM9算法C++实现之七:加密解密算法
- 国密SM9算法C++实现之八:密钥交换算法
- 国密SM9算法C++实现之九:算法功能与测试例子
- 国密SM9算法C++实现之七:加密解密算法
- @[toc]
- 加密算法流程
- 加密结果值
- Cipher.h
- 加密算法实现
- 解密算法流程
- 解密算法实现


根据算法描述,定义接口函数:
对于加密和解密算法中的明文加密方法,这里定义isBaseBlockCipher 参数来指示;同时,加解密算法中有两个长度,一个是用分组密码加密时的K1_len,因为使用的是SM4,所以是固定的16字节;另一个是K2_len,这个是MAC函数的密钥长度。按照MAC函数定义来说,这个长度是可以变的,但最好不小于MAC函数中的哈希函数的哈希值长度,这里因为使用的是SM3,所以默认是32字节。此处提供一个macKeyLen参数表示此K2_len长度,可以根据需要去掉该参数。
加密结果值
SM9加密结果内部包括C1、C2和C3三个部分,对此,也简单将其封装为一个类。这个封装是可取的,可以方便解密时的数据提取。
Cipher.h
加密算法实现
按照加密流程,实现加密算法:



根据算法描述,定义接口函数:
这里的后两个参数在使用时应该和加密时保持一致。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/204401.html