现在我们来看安全令牌,安全令牌上面的密码是随机生成的,这样在服务器的数据库上不可能保存密码,那么它是怎么做到跟服务器同步的?首先安全令牌是个电子表(在报废时间前这个“钟“应该可以认为是准确的),那么我们就可以根据当前时间产生一个6位的密码,而服务器同样也可以这么做,只要大家都使用同一时间计量,具体怎么根据时间来生成6位的密码呢?我们能想到的就是Hash(哈希),哈希是单向的,即你不能根据加密结果跟密匙推出原来的被加密的数据.比方6跟3取余为0,那么在知道3跟0的情况下你无法得出6,因为9%3也是0,现在比较常用的哈希算法有MD5,SAH1,SAH2等.那么有上面这些假设后,安全令牌可以这么工作,每个安全令牌有一个唯一的序列号,而每个序列号可以关联一个帐号,另外每个安全令牌内部有一段唯一的密匙,服务器数据库中也保留了安全令牌中的密匙,跟序列号.根据用户发送来的帐号判断是否绑定了令牌,如果绑定了则要求用户发送安全令牌随机密码,安全令牌使用md5(密匙串+时间)生成一段密码,用户将这段密码发送到服务器,服务器根据数据库里的信息进行相同的计算得到一个结果,比较两段数据,如果相同则登录成功,因为是60秒生成一个,应此允许有60秒以内的时间延迟.