diff options
-rw-r--r-- | lib/ayk/jcryption.rb | 21 | ||||
-rw-r--r-- | spec/jcryption_spec.rb | 4 |
2 files changed, 24 insertions, 1 deletions
diff --git a/lib/ayk/jcryption.rb b/lib/ayk/jcryption.rb index 3b4871f..d498184 100644 --- a/lib/ayk/jcryption.rb +++ b/lib/ayk/jcryption.rb @@ -25,6 +25,8 @@ #---------------------------------------------------------------------------- # require 'ayk/maths' +require 'digest/md5' +require 'digest/sha2' # module JCryption # @@ -47,5 +49,22 @@ module JCryption OpenSSL::PKey::RSA.generate( bits ) end module_function :gen_keypair + # + def digest passwd, salt=nil + n = passwd.length + i = ((n/2)+1)-n%8 + i=0 if i<0 + if salt.nil? + m = Digest::MD5.new + m << Time.now.to_s + n = Time.now.to_i%20 + salt = m.to_s[n..n+12] + end + d = Digest::SHA2.new << passwd[0..i]+salt+passwd[i+1..-1] + [d,salt] + end + module_function :digest + # end - +# +# EOF diff --git a/spec/jcryption_spec.rb b/spec/jcryption_spec.rb index ce1d174..85901de 100644 --- a/spec/jcryption_spec.rb +++ b/spec/jcryption_spec.rb @@ -15,6 +15,10 @@ describe JCryption do h['passwd'].should eql "my_password" h['timestamp'].should eql "1252937955" end + it 'should digest salted passwd' do + d,s = JCryption::digest 'mylovelypasswd' + JCryption::digest('mylovelypasswd',s)[0].should == d + end end end # |