SM2算法验签验证-多种工具验证
1. 通过智能密码钥匙登录系统时,开启wireshark抓取登录过程数据包;在业务系统开发者界面下,查找相关信息(服务端发回的随机数)
提取服务端发回随机数
serverRandom:"HJUHf5mHHH1KMB4TUg6dFA=="
2. 在业务系统开发者界面下,查找相关信息(客户端发回的随机数、签名值)
提取相关信息
random:"NG5DNUVKZHdqN3BYeXkyZg=="
signValue:"MEUCIQCwZBl1CoDAYUHYRkjYdOczg/fdu6dvji1F+qXR1nymxQIgcYT/jmV/IR/JPlFfw+Jlbjfq9sLibBvseQQurGL59V0="
3. 通过插件工具,查看智能密码钥匙中的客户端签名证书,提取公钥
提取公钥:
04d224460667d6d13c770f81b2a4518de3c91c53b91a1131f43a7e619d3ca723cbf253698e4ce75f63cf1e04421376cef52fc2e876fdc051bc8881c0aacf7932d0
4. 使用算法验证工具-1
5. 依据算法工具,所需信息,将以上提取信息总结如下
随机数:后端随机数+前端随机数
HJUHf5mHHH1KMB4TUg6dFA==NG5DNUVKZHdqN3BYeXkyZg==
将以上随机数转化为16进制
提取相关信息:
484a554866356d484848314b4d4234545567366446413d3d204e4735444e55564b5a4864714e33425965586b795a673d3d
6. 将签名值Base64,解码
提取以上信息
3045022100b06419750a80c06141d84648d874e73383f7ddbba76f8e2d45faa5d1d67ca6c502207184ff8e657f211fc93e515fc3e2656e37eaf6c2e26c1bec79042eac62f9f55d
7. 将以上所有信息,输入到算法验证工具,即可验证成功
注:将签名值的数据,输入到算法验证工具时,需将开头的3045022100和中间的0220删除后,在输入到算法验证工具中,方可验证成功
4. 使用算法验证工具-2
5. 依据算法工具,所需信息,将以上提取信息总结如下
A、提取证书公钥值为: 04d224460667d6d13c770f81b2a4518de3c91c53b91a1131f43a7e619d3ca723cbf253698e4ce75f63cf1e04421376cef52fc2e876fdc051bc8881c0aacf7932d0
Public Key X:输入值:证书公钥值删除开头04后64位:d224460667d6d13c770f81b2a4518de3c91c53b91a1131f43a7e619d3ca723cb
Public Key Y:输入值:证书公钥值后64位: f253698e4ce75f63cf1e04421376cef52fc2e876fdc051bc8881c0aacf7932d0
B、User ID:输入值为:1234567812345678的十六进制:
C、Data:随机数:后端随机数+前端随机数
HJUHf5mHHH1KMB4TUg6dFA==NG5DNUVKZHdqN3BYeXkyZg==
将以上随机数转化为16进制:484a554866356d484848314b4d4234545567366446413d3d4e4735444e55564b5a4864714e33425965586b795a673d3d
D、将签名值Base64,解码:
3045022100b06419750a80c06141d84648d874e73383f7ddbba76f8e2d45faa5d1d67ca6c502207184ff8e657f211fc93e515fc3e2656e37eaf6c2e26c1bec79042eac62f9f55d
SignatureR:输入值为:开头的3045022100和中间的0220之间的值:b06419750a80c06141d84648d874e73383f7ddbba76f8e2d45faa5d1d67ca6c5
SignatureS:输入值为:中间0220之后的值:7184ff8e657f211fc93e515fc3e2656e37eaf6c2e26c1bec79042eac62f9f55d
6. 将以上所有信息,输入到算法验证工具,即可验证成功