salty 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: