salty 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -19,17 +19,17 @@ and get the file locally. It's less than 1KB.
19
19
 
20
20
  require 'salty' # you may need to do './salty' if you used wget
21
21
 
22
- password = salty('mypassword') # iterative salted SHA1 hash
22
+ password = Salty.hash('mypassword') # iterative salted SHA512 hash
23
23
 
24
- if salty_eq('mypassword',password)
24
+ if Salty.check('mypassword',password)
25
25
  puts "You're logged in!"
26
26
  else
27
27
  puts "Wrong password"
28
28
  end
29
29
 
30
- A salt is generated and embeded in the output from <code>salty('mypassword')</code>. +salty_eq+ will then extract this salt, so there is no need to handle the salt yourself.
30
+ A salt is generated and embeded in the output from <code>Salty.hash</code>. +Salty.check+ will then extract this salt, so there is no need to handle the salt yourself.
31
31
 
32
- Obviously, the order of arguments to +salty_eq+ is important. The plain-text data must come first, followed by the previously-hashed data.
32
+ Obviously, the order of arguments to +Salty.check+ is important. The plain-text data must come first, followed by the previously-hashed data.
33
33
 
34
34
  == Contributing to salty
35
35
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
data/lib/salty.rb CHANGED
@@ -1,38 +1,46 @@
1
1
  require 'digest/sha1'
2
2
 
3
- SALT_LENGTH=30
4
- ALPHA = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a
3
+ module Salty
5
4
 
6
- def hash_fn(str)
7
- sha512 = Digest::SHA2.new(512)
8
- sha512.hexdigest(str)
9
- end
5
+ SALT_LENGTH=30
6
+ ALPHA = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a
10
7
 
11
- def generate_salt
12
- (1..SALT_LENGTH).map{ALPHA.sample}.join
13
- end
8
+ def Salty.hash_fn(str)
9
+ sha512 = Digest::SHA2.new(512)
10
+ sha512.hexdigest(str)
11
+ end
14
12
 
15
- def salted_hash(str,salt)
16
- res = str
17
- 100.times do
18
- res = hash_fn(res+salt)
13
+ def Salty.generate_salt
14
+ (1..SALT_LENGTH).map{ALPHA.sample}.join
15
+ end
16
+
17
+ def Salty.salted_hash(str,salt)
18
+ res = str
19
+ 100.times do
20
+ res = hash_fn(res+salt)
21
+ end
22
+ res
19
23
  end
20
- res
21
- end
22
24
 
23
- def salty(str)
24
- salt = generate_salt
25
+ def Salty.hash(str)
26
+ salt = generate_salt
25
27
 
26
- res = salted_hash(str,salt)
28
+ res = salted_hash(str,salt)
27
29
 
28
- n = str.length
29
- res[0...n] + salt + res[n..-1]
30
- end
30
+ n = str.length
31
+ res[0...n] + salt + res[n..-1]
32
+ end
31
33
 
32
- def salty_eq(unhashed,hashed)
33
- n = unhashed.length
34
- salt = hashed[n,SALT_LENGTH]
35
- myhashed = hashed[0...n] + hashed[n+SALT_LENGTH..-1]
34
+ def Salty.check(unhashed,hashed)
35
+ begin
36
+ n = unhashed.length
37
+ salt = hashed[n,SALT_LENGTH]
38
+ myhashed = hashed[0...n] + hashed[n+SALT_LENGTH..-1]
39
+
40
+ return myhashed == salted_hash(unhashed,salt)
41
+ rescue
42
+ return false
43
+ end
44
+ end
36
45
 
37
- myhashed == salted_hash(unhashed,salt)
38
46
  end
data/salty.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{salty}
8
- s.version = "0.0.6"
8
+ s.version = "0.0.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{Alec Benzer}]
data/test/test_salty.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'helper'
2
2
 
3
3
  def random_string
4
- generate_salt
4
+ Salty.generate_salt
5
5
  end
6
6
 
7
7
  class TestSalty < Test::Unit::TestCase
@@ -10,18 +10,18 @@ class TestSalty < Test::Unit::TestCase
10
10
  10.times do
11
11
  str = random_string
12
12
 
13
- hashed = salty(str)
14
- assert salty_eq(str,hashed)
13
+ hashed = Salty.hash(str)
14
+ assert Salty.check(str,hashed)
15
15
  end
16
16
  end
17
17
 
18
18
  should "hash inequaliy" do
19
19
  10.times do
20
20
  str = random_string
21
- hashed = salty(str)
21
+ hashed = Salty.hash(str)
22
22
 
23
23
  other = random_string
24
- assert(other == str || (not salty_eq(other,hashed)))
24
+ assert(other == str || (not Salty.check(other,hashed)))
25
25
  end
26
26
  end
27
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: salty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: shoulda
16
- requirement: &13650980 !ruby/object:Gem::Requirement
16
+ requirement: &14423040 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *13650980
24
+ version_requirements: *14423040
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &13962520 !ruby/object:Gem::Requirement
27
+ requirement: &14735680 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.12'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *13962520
35
+ version_requirements: *14735680
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &14327980 !ruby/object:Gem::Requirement
38
+ requirement: &15074500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *14327980
46
+ version_requirements: *15074500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &14449700 !ruby/object:Gem::Requirement
49
+ requirement: &15158700 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.8.3
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *14449700
57
+ version_requirements: *15158700
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rcov
60
- requirement: &14470840 !ruby/object:Gem::Requirement
60
+ requirement: &15240260 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *14470840
68
+ version_requirements: *15240260
69
69
  description: stupid little gem for salted hashing
70
70
  email: alecbenzer@gmail.com
71
71
  executables: []
@@ -100,7 +100,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
100
100
  version: '0'
101
101
  segments:
102
102
  - 0
103
- hash: -516840171916166722
103
+ hash: -1670934301516923058
104
104
  required_rubygems_version: !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements: