elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  hacer clave con * cuando se ingresa la misma
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: hacer clave con * cuando se ingresa la misma  (Leído 4,030 veces)
neo_from_cs_matrix

Desconectado Desconectado

Mensajes: 35


Ver Perfil
hacer clave con * cuando se ingresa la misma
« en: 21 Agosto 2011, 17:58 pm »

estoy en un programa de consola, necesito ingresar usuario y clave, pero quiero que la clave sea con hasteriscos asi *****
no se me ocurre mucho, manipular el cin? eso se me habia ocurrido si pero no se bien como hacerlo, me pueden ayudar a hacerlo .. solo necesito esa parte de la conversion a *, lo del ingreso eso no me referia  :xD


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: hacer clave con * cuando se ingresa la misma
« Respuesta #1 en: 21 Agosto 2011, 18:39 pm »

Supongo el lenguaje de programación es C++, ¿Correcto?

No es posible utilizando solo la biblioteca estándar de C++, vas a tener que utilizar bien el API que exponga el SO (por ejemplo Win32 en MS Windows) o una biblioteca de terceros (por ejemplo ncurses en Linux).

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
neo_from_cs_matrix

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: hacer clave con * cuando se ingresa la misma
« Respuesta #2 en: 21 Agosto 2011, 18:44 pm »

no haber yo encontre eso recien

http://www.daniweb.com/software-development/cpp/threads/32798
http://www.cplusplus.com/forum/general/3766/
http://ph.answers.yahoo.com/question/index?qid=20100928041720AAOyJGd
http://answers.yahoo.com/question/index?qid=20091022163828AAGxeYE

pero eso usa la biblioteca conio, pero quiero hacerlo con cin, osea el ingreso de la clave que sea con cin y entonces lo que necesito es modificar el cin para que cambie todas las letras o numeros que ingreso a hasteriscos, pero internamente guarda los valores reales para compararlos con la clave que esta wardada.
por eso necesito hacerlo con cin, quisiera que alguien me explicara como se hace, osea la parte de modificar el cin para que cambie a hasteriscos
gracias


En línea

El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: hacer clave con * cuando se ingresa la misma
« Respuesta #3 en: 21 Agosto 2011, 19:05 pm »

el problema de lo que quieres hacer es que el texto que se ingresa en la consola no se ingresa realmente en el buffer del cin hasta que no pulsas enter, asi te da la opcion de borrar si te equivocas, por lo que no se puede sincronizar el poner una letra y que salga el asterisco, otra cosa es que uses librerias graficas como Qt, que te dan la opcion de aplicar un cambio cuando se pulsa una letra y se ponga el * en la caja del texto.
No se si me he explicado bien, alguna duda ya sabes
Un saludo.
En línea

тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: hacer clave con * cuando se ingresa la misma
« Respuesta #4 en: 21 Agosto 2011, 19:20 pm »

Supongo el lenguaje de programación es C++, ¿Correcto?

No es posible utilizando solo la biblioteca estándar de C++, vas a tener que utilizar bien el API que exponga el SO (por ejemplo Win32 en MS Windows) o una biblioteca de terceros (por ejemplo ncurses en Linux).

Un saludo
Esto te servirá:

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <conio.h>
  4.  
  5. int main()
  6. {
  7.    using std::cout;
  8.    using std::endl;
  9.    using std::cin;
  10.    using std::string;
  11.  
  12.    const unsigned short len = 12; //aqui pones la longitud de la cadena de texto
  13.    string letra;
  14.    string respuesta = "Access:";
  15.    string texto = "************";
  16.    int j;
  17.  
  18.    //PROGRAMA
  19.    cout << "cPanel Login Access" << endl <<"Pass: ";
  20.    for(int i = 1; i <= len; i++)
  21.    {
  22.            letra = getch();
  23.            if(letra == "_")
  24.            {
  25.                     break;
  26.            }
  27.  
  28.            respuesta.insert(i+6, letra);
  29.            cout << texto.substr(i-1, 1);
  30.    }
  31.    cin >> j;
  32.    cout << endl << endl << respuesta << endl << endl << endl;
  33.    system("pause");
  34.    return 0;
  35. }
  36.  
En línea

neo_from_cs_matrix

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: hacer clave con * cuando se ingresa la misma
« Respuesta #5 en: 21 Agosto 2011, 19:21 pm »

el problema de lo que quieres hacer es que el texto que se ingresa en la consola no se ingresa realmente en el buffer del cin hasta que no pulsas enter, asi te da la opcion de borrar si te equivocas, por lo que no se puede sincronizar el poner una letra y que salga el asterisco, otra cosa es que uses librerias graficas como Qt, que te dan la opcion de aplicar un cambio cuando se pulsa una letra y se ponga el * en la caja del texto.
No se si me he explicado bien, alguna duda ya sabes
Un saludo.

ah ahora entiendo porque no sirve esto, porque el cin trabaja con el buffer istream, y este no tiene nada hasta que no se presiona enter, es eso cierto ?
entonces si yo sobrecargo cin eso no ayudaria a cambiar los digitos teclados porque todavia no fueron ingresados al buffer istream..

entonces que otras posibilidades me quedan, aparte de usar getch de conio?
lo de la libreria grafica amigo queda descartado porque soy begineer en este momento  :laugh:

 :¬¬



En línea

neo_from_cs_matrix

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: hacer clave con * cuando se ingresa la misma
« Respuesta #6 en: 21 Agosto 2011, 19:23 pm »

Esto te servirá:

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <conio.h>
  4.  
  5. int main()
  6. {
  7.    using std::cout;
  8.    using std::endl;
  9.    using std::cin;
  10.    using std::string;
  11.  
  12.    const unsigned short len = 12; //aqui pones la longitud de la cadena de texto
  13.    string letra;
  14.    string respuesta = "Access:";
  15.    string texto = "************";
  16.    int j;
  17.  
  18.    //PROGRAMA
  19.    cout << "cPanel Login Access" << endl <<"Pass: ";
  20.    for(int i = 1; i <= len; i++)
  21.    {
  22.            letra = getch();
  23.            if(letra == "_")
  24.            {
  25.                     break;
  26.            }
  27.  
  28.            respuesta.insert(i+6, letra);
  29.            cout << texto.substr(i-1, 1);
  30.    }
  31.    cin >> j;
  32.    cout << endl << endl << respuesta << endl << endl << endl;
  33.    system("pause");
  34.    return 0;
  35. }
  36.  

gracias, parece ser getch la forma mas directa de lograr esto

En línea

тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: hacer clave con * cuando se ingresa la misma
« Respuesta #7 en: 21 Agosto 2011, 20:06 pm »

si, no es necesaria ninguuna libreria no-estandar de C++
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: hacer clave con * cuando se ingresa la misma
« Respuesta #8 en: 22 Agosto 2011, 00:08 am »

getch, getche, etc, son parte de una biblioteca de terceros (conio de Borland) y no pertenecen a la biblioteca estándar de C++.

En el caso que nos ocupa eso, después de todo, no es importante ya que se tendrá que hacer de ese modo o utilizando (en mi opinión una opción mejor) la Win32 API. La referencia en linea del sitio oficial (MSDN) se encuentra en la pagina Consoles, su desventaja es que esta requiere un buen manejo del lenguaje.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: hacer clave con * cuando se ingresa la misma
« Respuesta #9 en: 22 Agosto 2011, 00:10 am »

getch, getche, etc, son parte de una biblioteca de terceros (conio de Borland) y no pertenecen a la biblioteca estándar de C++.

En el caso que nos ocupa eso, después de todo, no es importante ya que se tendrá que hacer de ese modo o utilizando (en mi opinión una opción mejor) la Win32 API. La referencia en linea del sitio oficial (MSDN) se encuentra en la pagina Consoles, su desventaja es que esta requiere un buen manejo del lenguaje.

Un saludo

Que sutil.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines