Foros del Web » Programación para mayores de 30 ;) » C/C++ »

CONTRASEÑA con asteriscos

Estas en el tema de CONTRASEÑA con asteriscos en el foro de C/C++ en Foros del Web. holas de nuevo, bueno esta ves quisiera pedirles una ayuda. toy en un proyecto, bueno y necesito una parte de ingreso de usuario y contraseña, ...
  #1 (permalink)  
Antiguo 08/05/2008, 12:59
Avatar de libitzu  
Fecha de Ingreso: marzo-2008
Ubicación: en aqp
Mensajes: 83
Antigüedad: 16 años, 1 mes
Puntos: 1
CONTRASEÑA con asteriscos

holas de nuevo, bueno esta ves quisiera pedirles una ayuda.
toy en un proyecto, bueno y necesito una parte de ingreso de usuario y contraseña, el problema esque quiero que al momento de escribir la contraseña salgan "*", en ves de lo que escribe, bueno en mi aula unos patas lo hicieron, yo lo estuve intentando y no lo logro, pero lo mas feo estaria creo en el numero de caracteres a ingregar, que son maximo 12, o sea solo 12 asteriscos y si quiere poner mas que no se lo permita.

esta feo no??

bueno gacias desde ya por la ayuda
  #2 (permalink)  
Antiguo 08/05/2008, 13:14
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: CONTRASEÑA con asteriscos

No es tan difícil como parece.

Lo que tienes que haces es dentro de un bucle, leer la tecla presionada, escribir un * en la salida estándar, y guardar el carácter leído en un buffer.

Algo así:

Código:
int continuar = 1;
while(continuar) {
    // bloquear programa hasta que el usuario presione una tecla
    if(caracterPresionado == ENTER) {
       continuar = 0;
   }
   else {
       // escribir un * en la salida estandar
       // guardar el caracter en un buffer de cadena
   }
}
Cuando el programa salga del bucle, tendrás almacenada la contraseña en el buffer.
Si deseas limitar la cantidad de caracteres, puedes especificar un contador de caracteres tecleados y comprobarlo en el if.
  #3 (permalink)  
Antiguo 08/05/2008, 13:25
Avatar de libitzu  
Fecha de Ingreso: marzo-2008
Ubicación: en aqp
Mensajes: 83
Antigüedad: 16 años, 1 mes
Puntos: 1
Re: CONTRASEÑA con asteriscos

a ya ok, ver pss si me sale, pero creo que hay un problema, pues si presiona "delete" para borrar algo que equivoco, eso tmbien lo pondra, o no??, ese es el problema, pero mis patas no se como pero evitaron eso
  #4 (permalink)  
Antiguo 09/05/2008, 09:01
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 meses
Puntos: 24
Re: CONTRASEÑA con asteriscos

Si, de hecho no te interpretará los caracteres especiales como es debido (Enter, Delete, etc). Para paliar esta situación, puedes poner un filtro de caracteres que se fije que caracter ha tipeado el usuario y tomar alguna accion con respecto a eso.

Por ejemplo, si es enter, salir del programa, si es delete, borrar el ultimo caracter.
  #5 (permalink)  
Antiguo 09/05/2008, 12:21
Avatar de libitzu  
Fecha de Ingreso: marzo-2008
Ubicación: en aqp
Mensajes: 83
Antigüedad: 16 años, 1 mes
Puntos: 1
Re: CONTRASEÑA con asteriscos

claro men, bueno gracias por tu ayuda, pss, ya encontre la solucion, para la contraseña, gracias por todo
  #6 (permalink)  
Antiguo 10/05/2008, 09:58
 
Fecha de Ingreso: abril-2008
Mensajes: 39
Antigüedad: 16 años
Puntos: 1
Re: CONTRASEÑA con asteriscos

podrias postear de que manera lo solucionaste, si no es mucho pedir, ya que alguien lo puede requerir, y de esa manera, tener alguna base ;)

Cya!
  #7 (permalink)  
Antiguo 12/05/2008, 09:54
Avatar de libitzu  
Fecha de Ingreso: marzo-2008
Ubicación: en aqp
Mensajes: 83
Antigüedad: 16 años, 1 mes
Puntos: 1
Re: CONTRASEÑA con asteriscos

pa eso si son buenos, no?? para pedir ayuda pero para ayudar,...

ya que importa lo importante del foro esque solucione algunos problemas y este ya esta solucionado, lo posteo mas tarde, es algo largo
  #8 (permalink)  
Antiguo 13/08/2011, 12:36
 
Fecha de Ingreso: agosto-2011
Mensajes: 1
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: CONTRASEÑA con asteriscos

hola quel tal quisiera que me ayuden que programa me puede facilitar para ver los codigo o contraseñas que uno ingresa y se ve en *** quisiera un programa para yo ver lo que han escrito
  #9 (permalink)  
Antiguo 13/08/2011, 15:55
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 1 mes
Puntos: 11
Respuesta: CONTRASEÑA con asteriscos

Si no han podido ayudarte no tienes porque ponerte asi amigo, en este foro suele haber gente muy novata, y quizás no sabian ayudarte, pero bueno, te dejo mi codigo hecho en 0,001 para que veas que la filosofia de los foros es ayudarse sin pedir nada.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cctype>
  3. using namespace std;
  4.  
  5. int main(){
  6.     string buffer;
  7.     char g=' ';
  8.     int contador = 0;
  9.  
  10.     while(g != '\n' && contador <= 12){
  11.         cin.get(g);
  12.         if(isalnum(g) || ispunct(g)){
  13.             cout << '*';
  14.             buffer.push_back(g);
  15.         }
  16.         contador++;
  17.     }
  18.  
  19.     return 0;
  20. }

El problema de mi codigo es que como se ejecuta en la terminal, para que haga el cin.get tienes que pulsar el enter, asi que solo saldran los asteriscos cuando pulses enter, para que esto no ocurra, si trabajas con librerias como Qt o wxwidgets, siempre tienen funciones para comprobar que el texto de sus cuadros de textos ha cambiado, entonces habria que cambiar el cin.get(g) por "if (Change(cuadro_de_texto))"
Pero bueno, te sirve para ver como usar la libreria cctype.
Por cierto, mi programa solo admite caracteres alfanumericos y de puntuacion ;)

Hechale un ojo a esto [URL="http://www.cplusplus.com/reference/clibrary/cctype/"]http://www.cplusplus.com/reference/clibrary/cctype/[/URL].

Un saludo!
  #10 (permalink)  
Antiguo 16/05/2012, 19:35
Avatar de Luc1fer  
Fecha de Ingreso: mayo-2012
Ubicación: Pachuca, hgo
Mensajes: 16
Antigüedad: 12 años
Puntos: 0
Respuesta: CONTRASEÑA con asteriscos

Amigos soy nuevo en el foro y en programacion y me pidiron hacer un programa que dependiendo el usuario aria algo pro que la contraseña no se viero y no se como alguien me puede ayudar por favor aqui esta mi codigo en c++

#include <stdio.h>
#include <conio.h>
#include <string.h>

#define usr "ricardo"
#define pass "hola"
#define usr1 "oziel"
#define pass1 "upp"
#define usr2 "ely"
#define pass2 "123"


int main(void) {
int numIntentos =3;
int a,b,c;
char usuario[100];
char contrasena[100];
printf("\n*** BIENVENIDO ***\n");
printf("\n MENU \n");
printf("\n1. CAPTURISTA\n");
printf("\n2. ADMINISTRADOR\n");
printf("\n3. SUPERVISOR\n");
printf("\n4. SALIR\n");
scanf("%i",&a);
switch(a){
case 1:
printf("usuario: ");
scanf("%s", usuario);
printf("contrasena: ");
scanf("%s", contrasena);
if ((strcmp(usuario, usr)!= 0) && (strcmp(contrasena, pass)!= 0))
{
printf("\tusuario no registrado y/o contrasena invalida\n");
}
else{
printf("***** A R C H I V O *****");
break;
}
case 2:
printf("usuario: ");
scanf("%s", usuario);
printf("contrasena: ");
scanf("%s", contrasena);
if ((strcmp(usuario, usr1)!= 0) && (strcmp(contrasena, pass1)!= 0))
{
printf("\tusuario no registrado y/o contrasena invalida\n");
}
else {
printf("\n MENU \n");
printf("\n1. ARCHIVO\n");
printf("\n2. HERRAMIENTAS\n");
printf("\n3. AYUDA\n");
scanf("%i",&b);
switch(b){
case 1:
printf("***** A R C H I V O *****");
break;
case 2:
printf("***** H E R R A M I E N T A S *****");
break;
case 3:
printf("***** A Y U D A *****");
break;
default:
printf("OPCION NO VALIDA");
break;
};
break;
}
case 3:
printf("usuario: ");
scanf("%s", usuario);
printf("contrasena: ");
scanf("%s", contrasena);
if ((strcmp(usuario, usr2)!= 0) && (strcmp(contrasena, pass2)!= 0))
{
printf("\tusuario no registrado y/o contrasena invalida\n");
}
else {
printf("\n MENU \n");
printf("\n1. ARCHIVO\n");
printf("\n2. HERRAMIENTAS\n");
scanf("%i",&c);
switch(c){
case 1:
printf("***** A R C H I V O *****");
break;
case 2:
printf("***** H E R R A M I E N T A S *****");
break;
default:
printf("OPCION NO VALIDA");
break;
};
break;
}
case 4:
break;
default:
printf("OPCION NO VALIDA");
break;
}
getch();
}
  #11 (permalink)  
Antiguo 16/05/2012, 21:02
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: CONTRASEÑA con asteriscos

Hola! veo q usas la libreria conio, proba con getche()

Saludos
  #12 (permalink)  
Antiguo 20/05/2012, 16:52
Avatar de Luc1fer  
Fecha de Ingreso: mayo-2012
Ubicación: Pachuca, hgo
Mensajes: 16
Antigüedad: 12 años
Puntos: 0
Respuesta: CONTRASEÑA con asteriscos

reemplaze la libreria conio por getch.h y me marco error

no entendi perdon
  #13 (permalink)  
Antiguo 20/05/2012, 16:59
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: CONTRASEÑA con asteriscos

getche() es una funcion de la libreria conio.h. Busca como funciona getche no getch, son dos funciones distintas

Saludos
  #14 (permalink)  
Antiguo 21/05/2012, 15:41
Avatar de Edux099  
Fecha de Ingreso: agosto-2010
Ubicación: Argentina
Mensajes: 1.285
Antigüedad: 13 años, 8 meses
Puntos: 37
Respuesta: CONTRASEÑA con asteriscos

Cita:
Iniciado por cesar_casla Ver Mensaje
getche() es una funcion de la libreria conio.h. Busca como funciona getche no getch, son dos funciones distintas

Saludos
Seguimos usando conio.h y getche() ??
__________________
Arch Linux user
Emacs user
  #15 (permalink)  
Antiguo 21/05/2012, 16:56
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: CONTRASEÑA con asteriscos

Asi:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>  // para la libreria conio.h
  3.  
  4. int main()
  5. {
  6. .........
  7. char c;
  8. printf("Ingrese algo\n");
  9. c=getche(); // aca se supone que no se ve lo que se escribe por teclado
  10.  
  11. return 0;
  12. }

No estoy seguro si asi se usa getche, cualquier cosa busca su funcionamiento

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:23.