Why base this on time? Using a simple HOTP which uses a rolling index for the "time value" seems like a much better choice for humans