# Passwords

**URL:** <https://www.ruby-forum.com/t/passwords/158291>\
**Category:** Ruby\
**Created:** [January 21, 2009, 7:41pm UTC](https://www.ruby-forum.com/t/passwords/158291 "2009-01-21T19:41:37Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![amin1426](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4da419/32.png) [@amin1426](https://www.ruby-forum.com/u/amin1426)\
**Post date:** [January 21, 2009, 7:41pm UTC](https://www.ruby-forum.com/t/passwords/158291/1 "2009-01-21T19:41:37Z")

</div>

Hi,

I’m new to Ruby ( one day), but not to programming (over 30 years) and I  
would like some help.

I would like to be able to read a password without echoing the  
characters typed. I’ve looked at getc but this echos the character (as a  
number).

Something like the python getpass would be good.

John C.

---

<div class="post-metadata">

**Author:** ![amin1426](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4da419/32.png) [@amin1426](https://www.ruby-forum.com/u/amin1426)\
**Post date:** [January 21, 2009, 7:49pm UTC](https://www.ruby-forum.com/t/passwords/158291/2 "2009-01-21T19:49:05Z")

</div>

On Wed, Jan 21, 2009 at 1:39 PM, John C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> Hi,
> 
> I’m new to Ruby ( one day), but not to programming (over 30 years) and I  
> would like some help.
> 
> I would like to be able to read a password without echoing the  
> characters typed. I’ve looked at getc but this echos the character (as a  
> number).
> 
> Something like the python getpass would be good.

[http://highline.rubyforge.org/](http://highline.rubyforge.org/)

-greg

---

<div class="post-metadata">

**Author:** ![amin1426](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4da419/32.png) [@amin1426](https://www.ruby-forum.com/u/amin1426)\
**Post date:** [January 21, 2009, 7:52pm UTC](https://www.ruby-forum.com/t/passwords/158291/3 "2009-01-21T19:52:02Z")

</div>

On Wed, Jan 21, 2009 at 10:39 AM, John C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> I would like to be able to read a password without echoing the  
> characters typed. I’ve looked at getc but this echos the character (as a  
> number).

The Ruby-Password library supports this. Check it out:  
[http://www.caliban.org/ruby/ruby-password.shtml](http://www.caliban.org/ruby/ruby-password.shtml)

It’s pretty simple:

Password.get( "Your prompt: " )

Ben

---

<div class="post-metadata">

**Author:** ![amin1426](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4da419/32.png) [@amin1426](https://www.ruby-forum.com/u/amin1426)\
**Post date:** [January 21, 2009, 8:13pm UTC](https://www.ruby-forum.com/t/passwords/158291/4 "2009-01-21T20:13:22Z")

</div>

On Wed, Jan 21, 2009 at 11:08 AM, John C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> Thanks, that is simple, but where do I find Password?, what requires do I  
> need?

All of that information and more is available at the link I gave you.  
It requires ruby-termios (which is available as a gem) and cracklib,  
which should be available from your operating system’s package  
manager.

Ben

---

<div class="post-metadata">

**Author:** ![amin1426](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4da419/32.png) [@amin1426](https://www.ruby-forum.com/u/amin1426)\
**Post date:** [January 21, 2009, 8:10pm UTC](https://www.ruby-forum.com/t/passwords/158291/5 "2009-01-21T20:10:58Z")

</div>

Thanks, that is simple, but where do I find Password?, what requires do  
I  
need?

2009/1/21 Ben B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![amin1426](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4da419/32.png) [@amin1426](https://www.ruby-forum.com/u/amin1426)\
**Post date:** [January 22, 2009, 12:22pm UTC](https://www.ruby-forum.com/t/passwords/158291/6 "2009-01-22T12:22:52Z")

</div>

Hi,

Am Donnerstag, 22. Jan 2009, 03:39:57 +0900 schrieb John C.:

> I would like to be able to read a password without echoing the  
> characters typed. I’ve looked at getc but this echos the character (as a  
> number).

[http://bertram-scharpf.homelinux.com/src/password.rb](http://bertram-scharpf.homelinux.com/src/password.rb)

Needs the termios gem and UN\*X.

Bertram

---

<div class="post-metadata">

**Author:** ![amin1426](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4da419/32.png) [@amin1426](https://www.ruby-forum.com/u/amin1426)\
**Post date:** [January 22, 2009, 12:35pm UTC](https://www.ruby-forum.com/t/passwords/158291/7 "2009-01-22T12:35:53Z")

</div>

- Bertram S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) [2009-01-22 20:20:27  
+0900]:

> Hi,
> 
> Am Donnerstag, 22. Jan 2009, 03:39:57 +0900 schrieb John C.:
> 
> > I would like to be able to read a password without echoing the  
> > characters typed. I’ve looked at getc but this echos the character (as a  
> > number).
> 
> [http://bertram-scharpf.homelinux.com/src/password.rb](http://bertram-scharpf.homelinux.com/src/password.rb)
> 
> Needs the termios gem and UN\*X.

an alternative suggestion is …

def get\_password  
print "Password: "  
`stty -echo`  
@pass=STDIN.gets.chomp ensure `stty echo`  
end

–  
Saji N. Hameed

APEC Climate Center +82 51 668 7470  
National Pension Corporation Busan Building 12F  
Yeonsan 2-dong, Yeonje-gu, BUSAN 611705 removed\_email\_address@domain.invalid  
KOREA

---

<div class="post-metadata">

**Author:** ![amin1426](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/4da419/32.png) [@amin1426](https://www.ruby-forum.com/u/amin1426)\
**Post date:** [January 22, 2009, 8:40pm UTC](https://www.ruby-forum.com/t/passwords/158291/8 "2009-01-22T20:40:39Z")

</div>

On Thu, Jan 22, 2009 at 6:33 AM, Saji N. Hameed [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > Needs the termios gem and UN\*X.
> 
> an alternative suggestion is …
> 
> def get\_password  
> print "Password: "  
> `stty -echo`  
> @pass=STDIN.gets.chomp ensure `stty echo`  
> end

It’s worth mentioning that of all the solutions recommended, Highline  
is the only one that works cross-platform comfortably.

require “highline/import”

pass = ask("Enter your password: ") { |q| q.echo = false }
