Alguém pode me ajudar com o problema e o código

O programa deve ser capaz de gerar e conferir a validade de senhas de uso único conforme as características descritas nas regras acima. Os mecanismos de geração e conferência de senhas devem ser implementados na classe ServidorOTP. Essa classe deve utilizar o encapsulamento da senha para protegêla de acessos indevidos por parte de seus clientes.

package programaprincipal;

import java.util.Scanner;
import java.util.Random;

public class GERADORSENHA {
	
	public static void main(String[] args) {
		servidorOTP gerar = new servidorOTP();
		gerar.calculo();
	}
}

CLASSE QUE EU INSTANCIEI

package programaprincipal;

import java.util.Random;
import java.util.Scanner;

public class servidorOTP {

	private String letras = "123456789abcdefghijklmnopqrstuvxz";
	
	private String getLetras() {
		return letras;
	}
	
	private void setLetras(String letras) {
		this.letras = letras;
	}
	
	public void calculo() {
		Random random = new Random();
		String chaves = "";
		int index;
		
		for (int i = 0; i < 8; i++) {
			index = random.nextInt(letras.length());
			chaves += letras.substring(index, index + 1);
		}
		
		System.out.println("digite a chave fornecida " + chaves);
		Scanner sc = new Scanner(System.in);
		chaves = sc.nextLine();
		
		if (chaves.equals(chaves)) {
			System.out.println("acesso liberado");
		} else {
			System.out.println("acesso negado");
		}
	}
}

NAO CONSIGO VALIDAR A SENHA CRIADA, COLOCO A SENHA GERADA E A SENHA ERRADA O PROGRAMA SO COMPILA COMO ACESSO LIBERADOTexto pré-formatado

Você atibuiu o valor digitado pelo usuário na variável chaves e está comparando com ela mesma, logo, o valor sempre vai ser igual!

Faça da seguinte forma:

String chaveDigitada = sc.nextLine();
		
if (chaves.equals(chaveDigitada)) {
    //Acesso liberado
}

caramba brother, vlw mesmo deu certinho. :grinning::grinning::facepunch::+1: