敬请关注博客后期不断更新优質博文,谢谢
【转发】SM4密码算法源码接口详解
最近几天想把cryptdb的加密算法换成国产的sm4加密算法所以花了时间研究了一下sm4的源码和基本原理,避免忘记写下这篇博客以作记录。
先介绍一下SM4算法SM4是我们自己国家的一个分组密码算法,是国家密码管理局于2012年发布的网址戳→_→:
具体的密码标准和算法官方有非常详尽的PDF文档以供查阅,戳→_→:
算法的源码实现官方也有相应的示例源码戳→_→:
先说说啥是分組密码算法:
分组密码算法——国际DES、国产SM4
分组密码就是将明文数据按固定长度进行分组,然后在同一密钥控制下逐组进行加密从而将各个明文分组变换成一个等长的密文分组的密码。其中二进制明文分组的长度称为该分组密码的分组规模
SM4密码算法的整体结构图如下:
Codebook,电码本)模式是分组密码的一种最基本的工作模式同样,sm4_crypt_cbc函数则是使用的CBC模式也就是分组链接模式)来对内容进行加密,内部也是┅个循环根据length的长度来进行循环,每次循环都调用sm4_one_round进行加密或者解密到底是加密还是解密,主要是根据第二个参数Mode来进行决定
以上僦是整个SM4算法的函数简介,运用这些函数接口我们不需要知道内部的具体实现,就可以使用sm4加密算法来对我们的数据进行加解密十分嘚方便。