这篇文章介绍了利用Nonce(随机数)和Timestamp(时间戳)来解决重放攻击(Replay-Attack)的问题。 马上找了个新浪微博登录这个例子来看看随机数和时间戳的实际作用。
1、获取随机数和时间戳
登录之前,先通过GET从新浪服务器获取到了servertime和nonce
2、点击登录,先在客户端加密用户名和密码
先将用户名通过BASE64计算进行加密(图中su对应加密后的用户名)
然后将密码、随机数、时间戳进行组合,进行多次非对称加密(图中sp对应加密后的密码),比如:
SHA1(SHA1(SHA1(密码) + servertime + nonce) + "")
其中最后""的作用是为了让最后算出来的结果肯定是个字符串,servertime和nonce的作用是进行干扰,再加上多次加密,大幅增加了破解难度。
3、组合参数,发出POST请求,等待服务器验证后的结果
上面三次SHA1加密的方法,是网上搜出来的,新浪曾经可能这么干过。但现在或以后,新浪换成其他加密算法,也是很正常的事,不要过多纠结到底用的是什么算法加密,本文目的只是说下随机数和时间戳在实际应用中的例子