国密算法测试总共有10项内容:
1.SM2密钥生成
2.SM2加密
3.SM2解密
4.SM2签名
5.SM2验签
6.SM3计算HASH
7.SM4 ECB模式加密
8.SM4 ECB模式解密
9.SM4 CBC模式加密
10.SM4 CBC模式解密
国密算法测试报文的网络管理信息码如表1所示。
表1 网络管理信息码
国密算法测试报文的60域数据组成如表2所示,62域数据组成如表3所示。
表2 60域数据组成
表3 62域数据组成
1. SM2密钥生成
终端发送给服务器的sm2生成密钥报文如下:
Bit[60](len = 11)
00 //交易类型码
00 00 01 //批次号
31 4 //SM2密钥生成,起始标志位,网络管理信息码
Bit[62](len = 200)
00 00 //请求数据索引
00 60 //后面的数据长度,96个字节
//终端产生的SM2公钥,64个字节
86 78 df 5a 8e c9 81 9b 06 98 4f 36 59 ee e2 13
34 8a 1e 4b 22 05 c4 5f 70 52 a5 06 53 9d f5 4b
4b ae 74 e8 98 b7 5b 96 1f 13 02 aa 8f 77 c1 bb
e4 cd 19 c9 d5 8e c5 dd 46 96 ba 96 ea 49 00 ea
//终端产生的SM2私钥,32个字节
a3 a3 fd 18 cc 1f f7 85 23 af 6e 41 8a 05 97 aa
72 5e 21 42 69 fd 5f f7 0c 03 9b 0a 43 f0 74 4e
服务器发送给终端的sm2生成密钥结束报文如下:
Bit[12](len = 6)
18 56 11 //时间
Bit[13](len = 4)
12 09 //日期
Bit[39](len = 4)
30 30 //应答码
Bit[60](len = 11)
00 //交易类型码
00 00 01 //批次号
32 4 //SM2生成密钥,终止标志位,网络管理信息码
Bit[62](len = 4)
00 00 //请求数据索引
测试生成密钥对的组数可以在config.ini配置文件中设置:
sm2_generate_count = 1
生成的密钥在output_sm2_generate.txt文件中保存:
8678df5a8ec9819b06984f3659eee213348a1e4b2205c45f7052a506539df54b4bae74e898b75b961f1302aa8f77c1bbe4cd19c9d58ec5dd4696ba96ea4900eaa3a3fd18cc1ff78523af6e418a0597aa725e214269fd5ff70c039b0a43f0744e
2. SM2加密
1、终端发送给服务器的sm2加密请求报文如下:
Bit[60](len = 11)
00 //交易类型码
00 00 01 //批次号
31 0 //sm2加密,起始标志位,网络管理信息码
Bit[62](len = 8)
00 00 //请求数据索引
00 00 //数据长度
2、服务器发送给终端的加密公钥和待加密数据报文如下:
Bit[12](len = 6)
16 21 58 //时间
Bit[13](len = 4)
12 14 //日期
Bit[39](len = 4)
30 30 //应答码
Bit[60](len = 11)
00 00 00 01
31 0 //sm2加密,起始标志位,网络管理信息码
Bit[62](len = 201)
00 00 //请求数据索引
//加密数据的公钥,64个字节
a7 35 a9 eb a0 14 c2 c9 9e 86 d6 11 41 cf b4 68
39 fb 73 61 03 4e 0b 91 04 1c 92 c8 db c8 d2 48
5b 21 93 c5 84 88 9e a1 c1 5e cd f2 58 0c 95 88
ef 5f 2c 98 c9 d9 8f 11 90 05 25 8f d7 40 92 dc
00 20 //后面的数据长度,32个字节
//待加密的数据
CD A5 88 F3 BF 33 BD C9 26 96 D4 7E 81 84 1A 5C
CD 64 FA BC B4 9B CE FD 36 C9 7F BC 1B 14 CF BF
3、加密数据的公钥、验证加密正确的私钥可以在服务器文件夹中的config.ini配置文件中设置:
sm2_public_key = a735a9eba014c2c99e86d61141cfb46839fb7361034e0b91041c92c8dbc8d2485b2193c584889ea1c15ecdf2580c9588ef5f2c98c9d98f119005258fd74092dc
sm2_private_key = 2da8b8e9f85b715bf9e3f4eec1742300441cb11def739095ad0fcef690733977
待加密的数据可以在服务器文件夹中的input_sm2_encrypt.txt文件中设置:
CDA588F3BF33BDC92696D47E81841A5CCD64FABCB49BCEFD36C97FBC1B14CFBF
FFAE990A2670FE6B893677B3F5FCCC0A3552830B740FFA8F723690D113CC6C4C
9CA220CF186C401E57AA3571D2F5F860BE8420BA2E00552923DD30FC4D606D53
B4EC642600C829AC5A2C583694A3D7F76CF675D713278DBD294D31317D9570D1
25138DAD94B80BA2CEC31DF453D8CE656F6B7CD94B49F54CBDCA4EE536885239
C71A79E8DC045C8C90771F4759A483CD6D2EB5A95DD6B7E80F9D49F6349EA0FA
4、终端向服务器发送加密数据的报文如下:
Bit[60](len = 11)
00 00 00 01
31 0 //sm2加密,起始标志位,网络管理信息码
Bit[62](len = 264)
00 01 //请求数据索引
00 80 //后面的数据长度,128个字节
//加密数据,32+96=128
c3 cc ab 68 42 49 87 dd ee 8e ca 75 7e e4 e5 57
33 1b e5 a0 86 f0 be 17 c0 0c 1f 26 41 1d 75 e1
41 49 77 a7 f0 60 f7 bd ac b7 4e fd d8 62 88 11
c7 85 d0 ff 16 d4 ee f0 34 1b e6 2a f9 38 b6 11
e8 ed 46 15 ff 03 8b 1f 3f 87 e2 3b 05 d9 b7 a9
49 af f2 75 9f 07 6f 18 5e 89 e2 6b 3f 3f 2a b7
65 c8 14 4b c6 3b a2 b4 89 ff 84 50 c9 dd c2 31
71 c2 e9 82 fe 10 78 17 f7 a8 03 32 bb ab 31 07
5、服务器向终端发送加密结束的报文如下:
Bit[12](len = 6)
16 22 04 //时间
Bit[13](len = 4)
12 14 //日期
Bit[39](len = 4)
30 30 //应答码
Bit[60](len = 11)
00 00 00 01
32 0 //SM2加密,终止标志位,网络管理信息码
Bit[62](len = 8)
00 08 //请求数据索引
00 00 //后面的数据长度
3. SM2解密
1、终端给服务器发送的sm2解密请求报文如下:
Bit[60](len = 11)
00 00 00 01
31 1 //SM2解密,起始标志位,网络管理信息码
Bit[62](len = 8)
00 00 //请求数据索引
00 00 //数据长度
2、服务器给终端发送sm2解密的私钥和待解密数据如下:
Bit[12](len = 6)
17 22 34 //时间
Bit[13](len = 4)
12 14 //日期
Bit[39](len = 4)
30 30 //应答码
Bit[60](len = 11)
00 00 00 01
31 1 //SM2解密,起始标志位,网络管理信息码
Bit[62](len = 329)
00 00 //请求数据索引
//解密用的私钥数据,32个字节
2d a8 b8 e9 f8 5b 71 5b f9 e3 f4 ee c1 74 23 00
44 1c b1 1d ef 73 90 95 ad 0f ce f6 90 73 39 77
00 80 //待解密的数据长度,128个字节
//待解密的数据
7d a3 da bd 32 3a bb e4 5b d9 ca 2e 65 5d fe d1
6b a9 e7 00 23 89 72 51 ad 13 e6 0b 2a 79 8d 10
05 5c c2 de b8 d2 4c ae da c2 05 5c 08 b5 db f1
2a 24 96 53 fd 13 71 4b 48 84 37 7d fe c7 bc ee
e3 4e 49 91 84 a5 96 f7 d7 bc 1b 8c 60 78 e4 b1
f2 2d 57 ed 32 56 ed b0 73 ee 89 9a 7f 23 65 39
da 0f c9 54 b5 78 59 db 18 cf 90 99 02 ec 6d a3
4f d1 58 6f 18 6c f9 9b 4c 70 58 63 85 0f e5 e6
来源:CSDN
作者:胡圣_123
链接:https://blog.csdn.net/qq_17639223/article/details/103462335