digest-sip_hash 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a821cc359081b3b9c8184db677719fce137d35f3a190839b99dbe2e05b3bc9a8
4
- data.tar.gz: bc743f50abfe70fff01e3c7b9f438bfbb8e73e884928118a75dff76f72e1f314
3
+ metadata.gz: 18035bf6f7ce76a23b7fc1ab2fe34eb5d3b1278bc89208930f94da9b558408dc
4
+ data.tar.gz: d16db0e9d7effe9083c891e195577ac1c2972a95907cddb80e61695f5c59d9d5
5
5
  SHA512:
6
- metadata.gz: 4e0c910c3e8e2b0131ccaef872e39e39767563655ef66b3ed48336125a1d17d7881b19aad12b98f5515327f175e44a7c256b1df1cd231cf3a5b42a0a6068bc80
7
- data.tar.gz: 63743fce636a8dcd204f04d72edd1259f031d9b07e453d43783616c9341e7a0e16082598ddf5fff44d5bf0e92b0c53e162810a077a8b831d0ef69f8e3e9ac552
6
+ metadata.gz: d4ae174a68b2adc47bcc92fbe3885742cbc5e105637caf3b661e8ab07cd57a47160975b3704f257ee7c100682104a426ecf78e3846f2bae3b339a4a5ea283264
7
+ data.tar.gz: 81693f1ff47e17d7f6c68972d422f9a55e7ec47db15896b8e53378ea19173a0f8bf7c7831037bebdbbe10f7c78ad68f6b59563aa4ba11a53f9c8adaa818b0d23
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Digest::SipHash
2
2
 
3
- A pure Ruby implementation of SipHash 1-3 and 2-4. Arbitrary round counts are also supported. If rounds and key are not specified, the default is SipHash 1-3 with a key of sixteen null bytes.
3
+ A pure Ruby implementation of SipHash 1-3 and 2-4. Arbitrary round counts are also supported. If rounds and key are not specified, the default is SipHash 1-3 with a key of 16 null bytes.
4
4
 
5
5
  ## Installation
6
6
 
@@ -10,26 +10,65 @@ gem install digest-sip_hash
10
10
 
11
11
  ## Library Examples
12
12
 
13
- The default key is 16 null bytes. Use `SecureRandom.bytes 16` to generate a random key.
13
+ The default key is 16 null bytes.
14
14
 
15
15
  ```ruby
16
- Digest::SipHash.new.hexdigest ''
16
+ require 'digest/sip_hash'
17
+
18
+ Digest::SipHash.hexdigest ''
17
19
  #=> "d1fba762150c532c"
18
20
 
19
- Digest::SipHash.new(key: 16.times.map(&:chr).join).hexdigest ''
20
- #=> "abac0158050fc4dc"
21
+ Digest::SipHash13.hexdigest ''
22
+ #=> "d1fba762150c532c"
21
23
 
22
24
  Digest::SipHash.new(1, 3).hexdigest ''
23
25
  #=> "d1fba762150c532c"
24
26
 
25
- Digest::SipHash13.hexdigest ''
27
+ Digest::SipHash.new(key: 0.chr * 16).hexdigest ''
26
28
  #=> "d1fba762150c532c"
27
29
 
30
+ Digest::SipHash.new(key: 16.times.map(&:chr).join).hexdigest ''
31
+ #=> "abac0158050fc4dc"
32
+
28
33
  Digest::SipHash.new(2, 4).hexdigest ''
29
34
  #=> "1e924b9d737700d7"
30
35
 
31
36
  Digest::SipHash24.hexdigest ''
32
37
  #=> "1e924b9d737700d7"
38
+
39
+ Digest::SipHash.new(4, 8).hexdigest ''
40
+ #=> "23ec6dd806738af3"
41
+
42
+ Digest::SipHash.new(8, 16).hexdigest ''
43
+ #=> "c05e9233091eb559"
44
+ ```
45
+
46
+ Use `SecureRandom.bytes 16` to generate a random key.
47
+
48
+ ```ruby
49
+ require 'digest/sip_hash'
50
+ require 'securerandom'
51
+
52
+ secret = SecureRandom.bytes 16
53
+ #=> "\r\xCBv\xE7\xA2V\xB9X`NP4[0\x98\xFD"
54
+
55
+ digest = Digest::SipHash.new
56
+ #=> #<Digest::SipHash: d1fba762150c532c>
57
+
58
+ digest.hexdigest
59
+ #=> "d1fba762150c532c"
60
+
61
+ digest.key = secret
62
+ #=> "\r\xCBv\xE7\xA2V\xB9X`NP4[0\x98\xFD"
63
+
64
+ digest.hexdigest
65
+ #=> "dd854240c470edef"
66
+
67
+ digest << 'nom'
68
+ #<Digest::SipHash: 85b61bc79bb9e7c4>
69
+
70
+ digest.hexdigest
71
+ #=> "85b61bc79bb9e7c4"
33
72
  ```
34
73
 
35
74
  ## Command Line Examples
data/Rakefile CHANGED
@@ -5,3 +5,7 @@ task default: %w[test]
5
5
  task :test do
6
6
  ruby 'spec/runner.rb'
7
7
  end
8
+
9
+ task :bench do
10
+ ruby 'bench/runner.rb'
11
+ end
@@ -89,14 +89,14 @@ module Digest
89
89
 
90
90
  def compress
91
91
  @v0 = add @v0, @v1
92
- @v1 = rotate @v1, 13, xor: @v0
92
+ @v1 = rotate @v1, 13, @v0
93
93
  @v0 = rotate @v0, 32
94
94
  @v2 = add @v2, @v3
95
- @v3 = rotate @v3, 16, xor: @v2
95
+ @v3 = rotate @v3, 16, @v2
96
96
  @v0 = add @v0, @v3
97
- @v3 = rotate @v3, 21, xor: @v0
97
+ @v3 = rotate @v3, 21, @v0
98
98
  @v2 = add @v2, @v1
99
- @v1 = rotate @v1, 17, xor: @v2
99
+ @v1 = rotate @v1, 17, @v2
100
100
  @v2 = rotate @v2, 32
101
101
  end
102
102
 
@@ -104,7 +104,7 @@ module Digest
104
104
  a + b & MASK
105
105
  end
106
106
 
107
- def rotate n, by, xor: 0
107
+ def rotate n, by, xor = 0
108
108
  n << by & MASK | n >> 64 - by ^ xor
109
109
  end
110
110
  end
@@ -4,6 +4,6 @@ require 'digest'
4
4
 
5
5
  module Digest
6
6
  class SipHash < Digest::Class
7
- VERSION = '0.0.4'
7
+ VERSION = '0.0.5'
8
8
  end
9
9
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path '../../lib', __FILE__
3
+ lib = File.expand_path '../lib', __dir__
4
4
  $LOAD_PATH.prepend lib unless $LOAD_PATH.include? lib
5
5
 
6
6
  require 'digest/sip_hash'
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: digest-sip_hash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shannon Skipper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-30 00:00:00.000000000 Z
11
+ date: 2018-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rake
14
+ name: benchmark-ips
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '12'
19
+ version: '2'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '12'
26
+ version: '2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '12'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '12'
55
69
  description: An implementation of SipHash 1-3, 2-4, etc. in pure Ruby.
56
70
  email:
57
71
  - shannonskipper@gmail.com