You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Why does generating a new code within the same time step but with a different key not have a new RemainingSeconds?
If I call GetTotp two times with a step of 9 minutes, the second call has a RemainingSeconds of the first call.
GetTotp takes a byte[] and count, 1, 2, 3, etc. the byte[] key is a hashed salt and count which generates a new code. I found that I had to make the key more unique than the previous call to GetTotp because calling GetTotp again (like when user wants a new key) within the 9 minute step just returned the same code.
Example. time step is 540 seconds.
GetTotp(salt, 1);
"309960"
RemainingSeconds 539
wait some seconds and call again...
GetTotp(salt, 2);
"718933"
RemainingSeconds 460
I expected RemainingSeconds to be closer to 539
internal string GetTotp(byte[] salt, int count)
{
string saltedKey = HashSomeStringWithSalt(salt, count.ToString());
byte[] key = Convert.FromBase64String(saltedKey);
var totp = new Totp(key, step: 540, mode: OtpHashMode.Sha256, totpSize: 6);
var dateTimeNow = DateTime.UtcNow;
var totpCode = totp.ComputeTotp(dateTimeNow);
return totpCode;
}
internal int GetOTPRemainingSeconds(byte[] salt, int count)
{
string saltedKey = HashSomeStringWithSalt(salt, count.ToString());
byte[] key = Convert.FromBase64String(key);
var totp = new Totp(key, step: 540, mode: OtpHashMode.Sha256, totpSize: 6);
return totp.RemainingSeconds();
}
The text was updated successfully, but these errors were encountered:
Why does generating a new code within the same time step but with a different key not have a new RemainingSeconds?
If I call GetTotp two times with a step of 9 minutes, the second call has a RemainingSeconds of the first call.
GetTotp takes a byte[] and count, 1, 2, 3, etc. the byte[] key is a hashed salt and count which generates a new code. I found that I had to make the key more unique than the previous call to GetTotp because calling GetTotp again (like when user wants a new key) within the 9 minute step just returned the same code.
Example. time step is 540 seconds.
wait some seconds and call again...
I expected RemainingSeconds to be closer to 539
The text was updated successfully, but these errors were encountered: