import
java.security.SecureRandom;
class
GFG {
public
static
String generateSecretKey()
{
SecureRandom secureRandom =
new
SecureRandom();
byte
[] bytes =
new
byte
[
16
];
secureRandom.nextBytes(bytes);
StringBuilder secretKey =
new
StringBuilder();
for
(
byte
b : bytes) {
secretKey.append(String.format(
"%02x"
, b));
}
return
secretKey.toString();
}
public
static
String generateOTP(String secretKey,
int
length)
{
String allowedCharacters =
"0123456789"
;
StringBuilder otp =
new
StringBuilder();
SecureRandom secureRandom =
new
SecureRandom();
for
(
int
i =
0
; i < length; i++) {
int
randomIndex = secureRandom.nextInt(allowedCharacters.length());
otp.append(allowedCharacters.charAt(randomIndex));
}
return
otp.toString();
}
public
static
void
main(String[] args)
{
String secretKey = generateSecretKey();
int
otpLength =
6
;
String otp = generateOTP(secretKey, otpLength);
java.util.Scanner scanner =
new
java.util.Scanner(System.in);
System.out.print(
"Please enter the received OTP: "
);
String userInput = scanner.next();
if
(userInput.equals(otp)) {
System.out.println(
"OTP verification successful. Access granted!"
);
}
else
{
System.out.println(
"OTP verification failed. Access denied!"
);
}
}
}