HTTP摘要认证方式分析与验证

使用tomcat自己创建了一个网页.

http://218.197.239.47:8080/First/MyHtml.html

进行了权限设置,使用摘要验证,用户名(root)和密码(admin),输入提示"Test DIGEST"


成功验证后,我们查看响应头和请求头信息如下所示:


其中最重要的信息为请求头中的Authentication首部:

  1. Authorization:

    Digest username="root", realm="Test DIGEST", nonce="1443966203108:5d733caba729a7b717e7d767e5f604e4", uri="/First/MyHtml.html", response="8ff4332d9e2790dcd24834d108da113c", opaque="B7BCDF23435CD63EEA088EAAA88C5857", qop=auth, nc=00000003, cnonce="9fb299a63a5883af"

根据摘要认证算,

使用python进行验证:

 
 
  1. import md5
  2. username="root"

  3. realm="Test DIGEST" //加密提示
  4. nonce="1443966203108:5d733caba729a7b717e7d767e5f604e4" //服务端发送给客户端的随机数
  5. uri="/First/MyHtml.html" //请求URI
  6. response="8ff4332d9e2790dcd24834d108da113c" //客户端计算得到的hash值
  7. opaque="B7BCDF23435CD63EEA088EAAA88C5857"
  8. qop="auth" //增强保护质量
  9. nc="00000003" //表示客户端已经发送的包含nonce值的次数,如果nc值相同,就表示请求是重放的
  10. cnonce="9fb299a63a5883af" //客户端提供的不透明引用字符串值
  11. A1=username+":"+realm+":"+"admin" //涉及安全信息的数据部分
  12. print "A1=",A1
  13. A1_to_md5=md5.new(A1).hexdigest()
  14. print "A1_to_md5=",A1_to_md5
  15. A2="GET"+":"+uri //与请求相关的数据部分,这是qop为auth时的A2
  16. print "A2=",A2
  17. A2_to_md5=md5.new(A2).hexdigest()
  18. print "A2_to_md5=",A2_to_md5
  19. total=A1_to_md5+":"+nonce+":"+nc+":"+cnonce+":"+qop+":"+A2_to_md5
  20. response_calc=md5.new(total).hexdigest() //根据算法计算的到的hash值
  21. print "response_calc=",response_calc
  22. print "response_calc==response",response_calc==response


运行结果如图所示:



最后我们根据算法流程计算的结果response_calc和浏览器实际得到的结果对比发现,两者是相等的。

可以验证,加密流程就是如算法所描述的一样。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值