最近浏览了一下国密办的官方网站,新公布了国密算法标准,其中有SM4算法,说明为原SMS4算法,既无线局域网标准的分组数据算法,可参考
:http://www.oscca.gov.cn/News/201204/News_1228.htm 公告说明,但不能下载标准文档 。
SM4为对称算法,密钥长度和分组长度均为128位。按原SMS4的标准描述:加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加
密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
看了一下,算法中还描述了类似于DES算中的S盒变换。那如何来设计这个算法,在网上查询一下实现的代码还是满多的,按之前的经验参照
Xyssl算法风格和网上查询的示例代码实现C语言实现代码。在此非常感谢Xyssl和
http://hi.baidu.com/numax/blog/item/80addfefddfb93e4cf1b3e61.html这位版主。
改造后的代码实现了ECB和CBC两种加密模式,未处理数据填充Padding,使用时数据设置为16的倍数。源代码请参考CSDN的资源链接:
http://download.csdn.net/detail/goldboar/4244270,使用VC6实现,测试数据通过。