salty 0.0.2 → 0.0.3

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.
Files changed (6) hide show
  1. data/README.rdoc +10 -4
  2. data/VERSION +1 -1
  3. data/lib/salty.rb +10 -3
  4. data/salty.gemspec +2 -2
  5. data/test/test_salty.rb +20 -4
  6. metadata +13 -13
data/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = salty
2
2
 
3
- stupid little gem for salted hashing
3
+ stupid little gem for salted hashing (for, eg, user passwords)
4
4
 
5
5
  == Installation
6
6
  Just
@@ -13,14 +13,20 @@ If you want, you can also just
13
13
 
14
14
  $ wget https://raw.github.com/alecbenzer/salty/master/lib/salty.rb
15
15
 
16
- and get the file locally. It's less than 300 bytes.
16
+ and get the file locally. It's less than 1KB.
17
17
 
18
18
  == Usage
19
19
 
20
20
  require 'salty' # you may need to do './salty' if you used wget
21
21
 
22
- salt = generate_salt # generate a salt
23
- salted_hash("mypassword",salt) # => "edcaa79cf4f507cb43995d2e2616530b43236667"
22
+ salt = generate_salt
23
+ password = salty("mypassword",salt) # iterative salted SHA1 hash
24
+
25
+ if salty_eq("mypassword",password,salt)
26
+ puts "You're logged in!"
27
+ else
28
+ puts "Wrong password"
29
+ end
24
30
 
25
31
  == Contributing to salty
26
32
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
data/lib/salty.rb CHANGED
@@ -5,13 +5,20 @@ def hash_fn(str)
5
5
  end
6
6
 
7
7
  def salted_hash(str,salt)
8
+ res = str
8
9
  100.times do
9
- str = hash_fn(str+salt)
10
+ res = hash_fn(res+salt)
10
11
  end
11
- str
12
+ res
12
13
  end
13
14
 
14
- ALPHA = ('A'..'Z').to_a + ('a'..'z').to_a
15
+ alias :salty :salted_hash
16
+
17
+ def salty_eq(unhashed,hashed,salt)
18
+ hashed == salted_hash(unhashed,salt)
19
+ end
20
+
21
+ ALPHA = ('A'..'Z').to_a + ('a'..'z').to_a + ('0'..'9').to_a
15
22
 
16
23
  def generate_salt(n=30)
17
24
  (1..n).map{ALPHA.sample}.join
data/salty.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{salty}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
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}]
12
- s.date = %q{2012-03-23}
12
+ s.date = %q{2012-03-24}
13
13
  s.description = %q{stupid little gem for salted hashing}
14
14
  s.email = %q{alecbenzer@gmail.com}
15
15
  s.extra_rdoc_files = [
data/test/test_salty.rb CHANGED
@@ -1,13 +1,29 @@
1
1
  require 'helper'
2
2
 
3
+ def random_string
4
+ generate_salt
5
+ end
6
+
3
7
  class TestSalty < Test::Unit::TestCase
4
8
  context "test salt" do
5
- setup do
6
- @salt = generate_salt
9
+ should "basic" do
10
+ salt = generate_salt
11
+ hashed = salty("bob",salt)
12
+ end
13
+
14
+ should "hash equality" do
15
+ str = random_string
16
+ salt = generate_salt
17
+
18
+ assert_equal salted_hash(str,salt), salted_hash(str,salt)
7
19
  end
8
20
 
9
- should "hash the same string and ensure the hash is the same" do
10
- assert_equal salted_hash("bobby",@salt), salted_hash("bobby",@salt)
21
+ should "hash equality method" do
22
+ str = random_string
23
+ salt = generate_salt
24
+
25
+ hashed = salted_hash(str,salt)
26
+ assert salty_eq(str,hashed,salt)
11
27
  end
12
28
  end
13
29
  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.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-23 00:00:00.000000000Z
12
+ date: 2012-03-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: shoulda
16
- requirement: &20461820 !ruby/object:Gem::Requirement
16
+ requirement: &25936460 !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: *20461820
24
+ version_requirements: *25936460
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rdoc
27
- requirement: &20460500 !ruby/object:Gem::Requirement
27
+ requirement: &25935860 !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: *20460500
35
+ version_requirements: *25935860
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &20459280 !ruby/object:Gem::Requirement
38
+ requirement: &25891600 !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: *20459280
46
+ version_requirements: *25891600
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &20458080 !ruby/object:Gem::Requirement
49
+ requirement: &25891120 !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: *20458080
57
+ version_requirements: *25891120
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rcov
60
- requirement: &20456860 !ruby/object:Gem::Requirement
60
+ requirement: &25890540 !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: *20456860
68
+ version_requirements: *25890540
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: -2934857537776480131
103
+ hash: -118519924956232819
104
104
  required_rubygems_version: !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements: