1.对称国密算法
SM4(原SMS4)
SM4算法是由中国国家密码管理局于2006年1月6日发布,在无线局域网产品中批准使用的对称密码算法。
SM4密码算法是一个迭代分组密码算法。该算法的信息块长度为128位,密钥长度为128位。加密算法与密钥扩展算法都采用32轮非线性迭代结构,SM4数据解密和数据加密的算法结构相同,只是子密钥的使用顺序相反,解密子密钥是加密子密钥的逆序。
2.非对称国密算法
SM2
SM2算法是由国家密码管理局于2012年12月17日发布的椭圆曲线公钥密码算法,主要满足电子认证系统等应用需求。
该算法的主要参数如下:
①推荐使用素数域256位椭圆曲线。
②椭圆曲线方程:y² = x³+ax+b。
③曲线参数:
p = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
a = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
b = 28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93
n = FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123
Gx = 32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7
Gy = BC3736A2 F4F6779C 59BDCEE3 68692153 D0A9877C C62A4740 02DF32E5 2139F0A0
3.国密摘要算法
SM3
SM3算法是由中国国家密码管理局于2012年12月17日发布的摘要算法,主要满足电子认证服务系统等应用需求。
针对长度为l(l<2 64 )比特的消息m,SM3算法经过填充和迭代压缩,生成杂凑值,杂凑值长度为256位。其中填充过程为:假设消息m的长度为l位。首先将位“1”添加到消息的末尾,再添加k个“0”,k是满足l+1+k=448mod的最小的非负整数,然后再添加一个64位的比特串,该比特串是长度l的二进制表示,填充后的消息m’ 的比特长度为512的倍数。
验证SM3算法的正确性的测试用例如下:
SM3(“abc”) = 66c7f0f4 62eeedd9 d1f2d46b dc10e4e2 4167c487 5cf2f7a2 297da02b 8f4ba8e0。
SM3(“61626364 61626364 61626364 61626364 61626364 61626364 61626364 61626364”) = debe9ff9 2275b8a1 38604889 c18e5a4d 6fdb70e5 387e5765 293dcba3 9c0c5732。