【问题标题】:one time password (OTP) expiry leeway一次性密码 (OTP) 到期余地
【发布时间】:2014-08-28 10:44:21
【问题描述】:

如何为定时到期设置允许误差范围的余地,例如:1 分钟?

目前这是我的粗略实现,我必须在最后一分钟添加另一个检查,以防服务器收到消息 00:01:00 并且客户端发送 00:00:59;

/**Client**/
int minutesNow = timeInSeconds()/60;
String mySignature = genAlgo(minutesNow, firstPassword);
sendToServer(mySignature);

/**Server**/
int minutesNow = timeInSeconds()/60;
String userPassword = getUserPassword();
boolean result = verifySig(mySignature, userPassword, minutesNow);
if(!result)
{
   result = verifySig(mySignature, userPassword, --minutesNow);
}

这个问题是对 Password Reset Link Expiry ...我需要更多时间细节 +/-

【问题讨论】:

    标签: passwords one-time-password


    【解决方案1】:

    您只需要在服务器端进行几次检查:当前分钟、前分钟和未来分钟。

    它看起来像这样:

    /**Server**/
    int validationWindow = 1; // in minutes
    int minutesNow = timeInSeconds()/60;
    String userPassword = getUserPassword();
    
    int timeToCheck = minutesNow - validationWindow; 
    boolean result = verifySig(mySignature, userPassword, timeToCheck);
    while (!result && timeToCheck <= minutesNow + validationWinwow) {
        result = verifySig(mySignature, userPassword, ++timeToCheck);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-26
      • 2014-04-19
      • 2020-05-04
      • 1970-01-01
      • 2017-01-25
      • 2012-01-29
      • 1970-01-01
      • 2019-11-30
      相关资源
      最近更新 更多