crypt
 
  crypt(p1)
  public
  
  
 brian -  
    May  4, 2009
 brian -  
    May  4, 2009 
    
  clarification
Via Kenneth Kalmer:
From the man page: If salt is a character string starting with the characters “$id$” followed by a string terminated by “$”: $id$salt$encrypted then instead of using the DES machine, id identifies the encryption method used and this then determines how the rest of the password string is interpreted.
irb session
=> “abNANd1rDfiNc” irb(main):002:0> “secret”.crypt(”abasasa”) => “abNANd1rDfiNc” irb(main):003:0> “secret”.crypt(”$1$abasasa”) => “$1$abasasa$2RZY2vd6E2ZEPSDa0eLec0″ irb(main):004:0> “secret”.crypt(”$1$abasa”) => “$1$abasa$ikoKICgwOFdcWgmDl9Asy1″
see http://www.opensourcery.co.za/2009/05/01/quick-nix-shadow-passwords-with-ruby/
 gabetax -  
    March  3, 2011
 gabetax -  
    March  3, 2011 
    
  String#crypt uses your platform's native implementation
Which cipher types (specified through the salt argument) are available will depend on what your platform natively supports. It should be noted that OSX up to at last 10.6 only provides the regular DES cipher. On most Linux platforms, however, you should have access to the following:
ID | Method --------------------------------------------------------- 1 | MD5 2a | Blowfish (not in mainline glibc; added in some | Linux distributions) 5 | SHA-256 (since glibc 2.7) 6 | SHA-512 (since glibc 2.7)
So on OSX, you might have:
ruby-1.9.2-p180 :001 > "password".crypt("$6$somesalt") => "$6FMi11BJFsAc"
But on Linux, you’ll get:
irb(main):001:0> "password".crypt("$6$somesalt") => "$6$somesalt$A7P/0Yfu8RprY88D5T1n.xKT749BOn/IXBvmR1gXZzU7imsoTfZhCQ1916CB7WNX9eOOeSmBmmMrl5fQn9LAP1"
For more information on what your platform supports, see `man crypt`
 WedTM -  
    February 11, 2010 - (v1_8_6_287 - v1_8_7_72)
 WedTM -  
    February 11, 2010 - (v1_8_6_287 - v1_8_7_72)
    
  Clarification of argument
The description should read:
The argument is the salt string, which must be at least two characters long, each character drawn from [a-zA-Z0-9./].
 mildavw -  
    December  7, 2012
 mildavw -  
    December  7, 2012 
    
  Beware: default system crypt functionality silently ignores characters beyond the 8th
On some systems:
"1".crypt('aa') => "aacFCuAIHhrCM" "12".crypt('aa') => "aa8dJzr7DFMPA" "123".crypt('aa') => "aamrgyQfDFSHw" "1234".crypt('aa') => "aatxRPdZ/m52." "12345".crypt('aa') => "aajt.4s3e3SZA" "123456".crypt('aa') => "aaAN1ZUwjW7to" "1234567".crypt('aa') => "aaOK9MRbwVNmQ" "12345678".crypt('aa') => "aaNN3X.PL2piw" "123456789".crypt('aa') => "aaNN3X.PL2piw" "1234567890".crypt('aa') => "aaNN3X.PL2piw" "1234567890abcdefghij".crypt('aa') => "aaNN3X.PL2piw"

 RSpec
RSpec Ruby on Rails
Ruby on Rails Ruby
Ruby 
   
   
   
   
    
     
   
   = protected
 = protected
   
    