La soluzione a questo è specifico per la piattaforma, purtroppo.
Su Linux o BSD, è possibile utilizzare la funzione readpassphrase (c'è anche getpass, anche se soffre non permettendo buffer e buffer di dimensione che devono essere fornite dal chiamante. La documentazione relativa al (link GNU Lib C rotto? Provare this alternative invece) la libreria fornisce anche un'eccellente guida su come implementarla in termini di primitive di livello inferiore, che è possibile utilizzare su altre implementazioni UNIX in lieue of getpass).
Su Windows, è possibile utilizzare SetConsoleMode per disabilitare il comportamento di eco predefinito (e quindi echo i propri caratteri come l'asterisco). È quindi possibile utilizzare SetConsoleMode per ripristinare l'eco.
Dovrei aggiungere, tuttavia, che si tratta di una forma di autenticazione molto scarsa in quanto implica ancora più password che sono la rovina dell'esistenza di ogni utente (e non particolarmente sicura, neanche). Un approccio migliore consiste nell'avviare un server web nell'applicazione e generare l'URL su cui l'utente deve autenticarsi. Il vantaggio di questo approccio è che, quando l'utente naviga verso questo URL, tale URL può quindi supportare l'accesso delegato a provider di identità di terze parti come Google, Facebook, Twitter, ecc. Anche se non supporti provider di identità di terze parti, questo approccio viene fornito con altri vantaggi; se si dispone di altri strumenti basati sul Web, questo approccio riduce il numero di volte che l'utente deve autenticarsi (poiché lo strumento della riga di comando e gli strumenti basati sul Web condividono la stessa sessione del browser) e consente di implementare il flusso di accesso solo una volta, questo approccio riduce anche i rischi di phishing (gli utenti possono chiaramente vedere l'host nel browser quando inseriscono le proprie credenziali rispetto all'immissione delle credenziali sulla riga di comando in cui è molto più facile falsificare un prompt e se si reindirizza a localhost solo all'ultimo passaggio ma si fa il la maggior parte della logica su un host remoto questo approccio consente inoltre di implementare gli aggiornamenti del flusso di autorizzazione indipendentemente dall'applicazione della riga di comando del client che presenta importanti vantaggi per la sicurezza. Vale anche la pena di esaminare meccanismi di autenticazione alternativi come libpam (sotto libpam, si userebbe la funzione pam_authenticate per autenticare l'uso r piuttosto che prendere la password come input direttamente). Vale la pena investire qualche ricerca per determinare il meccanismo migliore per il proprio caso d'uso particolare.
fonte
2014-09-23 09:07:06
potete inserire quello che hai scritto prima? – SSC
Duplicato: http://stackoverflow.com/questions/17130979/how-to-have-password-echoed-as-asterisks-using-getch –
È necessario specificare la propria piattaforma in quanto la soluzione a questo è specifica della piattaforma –