动态口令

动态口令的核心是口令生成算法和时间同步问题
 
一、口令生成算法
口令生成算法是基于时间的一种秘密算法,它是根据用户密钥数据和当前的时间产生一固定长度的字符串。以下是一种产生16位动态口令的示范算法:
1)程序提取当前时间和用户密钥数据。
2)利用时间对用户密钥数据进行加密。
3)利用SHA-1算法提取加密结果的消息摘要。
4)将所产生的消息摘要作为动态口令使用。当然如果在需要用户输入动态口令的情况下,就还得对此口令进行代码转换,将其转换为ASCII码,否则用户无法输入。
 
二、时间同步
本算法一个非常重要的问题是时间的同步。如果服务器端和客户端的时间无法同步,则产生出来的口令肯定不同,从而无法进行认证。为了使用时间同步,客户端可以在传送过程中将当前的时间进行适当变换传送给服务器,服务器计算动态口令时可以此时间为基础进行计算,并将此时间列入已使用过的时间,下次客户端送来的时间必须在此之后,否则不予认证。这样可以很好地实现时间同步问题。
 
三、用户密钥的产生和分配
用户密钥数据是动态口令的产生的基础,因此必须在非常安全的情况下产生和分配:
1)密钥的分配和产生由维护模块负责,当用户进行注册时,服务器随机产生用户的密钥,然后分发给用户(分发时最好是让用户亲自来取),并在自己的数据库中进行保存,以供以后产生口令时使用。
2)用户可以根据需要申请服务器重新产生密钥数据。
3)为了安全起见,密钥数据的保存必须经过加密保存。

你可能感兴趣的:(算法)