import java.security.SecureRandom;
import java.util.concurrent.TimeUnit;
public class OTPGenerator {
// 生成6位数字的单次验证码
public static String generateOTP() {
SecureRandom random = new SecureRandom();
int otp = 100000 + random.nextInt(900000); // 生成100000到999999之间的随机数
return String.format("%06d", otp); // 确保结果始终是6位数,不足部分前面补零
}
// 模拟验证码的有效期检查(实际应用中应根据具体需求调整)
public static boolean isOTPEffective(long generationTimeMillis, long expirationMinutes) {
long currentTimeMillis = System.currentTimeMillis();
long expirationTimeMillis = TimeUnit.MINUTES.toMillis(expirationMinutes);
return (currentTimeMillis - generationTimeMillis) <= expirationTimeMillis;
}
public static void main(String[] args) throws InterruptedException {
// 生成验证码
String otp = generateOTP();
System.out.println("生成的验证码是: " + otp);
// 记录生成时间
long generationTime = System.currentTimeMillis();
// 模拟等待一段时间
Thread.sleep(2 * 60 * 1000); // 等待2分钟
// 检查验证码是否仍然有效
if (isOTPEffective(generationTime, 5)) { // 假设有效期为5分钟
System.out.println("验证码仍然有效!");
} else {
System.out.println("验证码已过期!");
}
}
}