一、参考GAT1400文档,认证协议为
上接上回:
认证时候,视图库返回认证信息:
WWW-Authenticate: Digest realm="12312312315031231231", nonce="zWq5D1nFFUa71Ni9", opaque="BSTjT6ow+VLrnu4k", algorithm=MD5, qop="auth"
再次注册时候注册里面的认证信息:
Authorization: Digest username="34078100001190001002", realm="12312312315031231231", nonce="zWq5D1nFFUa71Ni9", uri="/VIID/System/Register", algorithm="MD5", qop=auth, nc=00000001, cnonce="0a4f113b", response="72ad0bd84ec2ff10acf0c310b3beab16", opaque="BSTjT6ow+VLrnu4k"
需要计算的值:response
加密算法:response= MD5(HA1:nonce:nc:cnonce:qop:HA2)
HA1=MD5(username:realm:password)
HA2=MD5(method:uri)
其中password为admin
python代码展示下具体计算过程:
import hashlib
username = '34078100001190001002'
realm = '12312312315031231231'
password = 'admin'
md5_ha1 = hashlib.md5()
s_HA1 = username + ':' + realm + ':' + password
md5_ha1.update(s_HA1.encode('utf-8'))
HA1 = md5_ha1.hexdigest()
print('ha1:',HA1)
method = 'POST'
uri = '/VIID/System/Register'
md5_ha2 = hashlib.md5()
s_HA2 = method + ':' + uri
md5_ha2.update(s_HA2.encode('utf-8'))
HA2 = md5_ha2.hexdigest()
print('ha2:', HA2)
nonce = 'zWq5D1nFFUa71Ni9'
nc = '00000001'
cnonce = '0a4f113b'
qop = 'auth'
md5_ha3 = hashlib.md5()
s_HA3 = HA1 + ':' + nonce + ':' + nc + ':' +cnonce + ':' + qop + ':' + HA2
md5_ha3.update(s_HA3.encode('utf-8'))
HA3 = md5_ha3.hexdigest()
print('response:', HA3)
计算结果展示:
ha1: 2626be6580dccd768a379a5aba06a85a
ha2: e981db7569f065fda647d8236af6f901
response: 72ad0bd84ec2ff10acf0c310b3beab16