Algoritmo/Teoria
vector[] <- (0,1,2,...,9,'a','b','c',...,'z') // vector com as teclas do teclado
teclas_por_linha <- 9 // variável com o número de teclas por cada linha do teclado
// ao inicializar teclado, "baralhar" o vector, de forma a que o teclado nunca seja escrito com as teclas nas mesmas posições.
// ao realizar esta operação no servidor, o cliente não consegue evitar/alterar esta forma de baralhar.
// ao clicar numa tecla do teclado, o valor é impresso normalmente de forma escondida no campo de texto não editável.
// ao submeter a password, o código é encriptado do lado do cliente (md5), de forma a que a password real nunca seja enviada pela rede.
// após submeter, é retornada ao cliente a hash sha1 da chave, que inclui verificação de ter sido realizada por este programa.