dighasher 0.3.0 → 0.3.1
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.
- checksums.yaml +4 -4
- data/lib/dighasher/generator.rb +146 -0
- data/lib/dighasher/version.rb +1 -1
- data/lib/dighasher.rb +1 -141
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b0a2f06dc97623bce64451de0847366b85d3e62
|
4
|
+
data.tar.gz: 0893254f7a3ec4e2a71c63b0806936c48ca77e65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ebf499d0a39b29814d78c37875af551aee54a39e9afe591a8cb0a608b013b55c3c5671ef90b144575620ed09c4c37152a9df0df9aeaae1055cab63676df1ccd
|
7
|
+
data.tar.gz: a32745da5752222a3097e6f84f0931fc36313a454f09a3f44e974f29dcc274e40fcbd2df276a346f83e22b5773389b2b793424e38a84b2d1c3cca710491d4c33
|
@@ -0,0 +1,146 @@
|
|
1
|
+
require "dighasher/digest_generator"
|
2
|
+
|
3
|
+
# Hash Generate Module
|
4
|
+
module Dighasher
|
5
|
+
|
6
|
+
# Hash Generate Class
|
7
|
+
class Generator
|
8
|
+
|
9
|
+
# constructor
|
10
|
+
# @param [integer] mode Hash mode. DigestGenerator::Xxxx constant.
|
11
|
+
# @param [String] str target string
|
12
|
+
# @param [integer] bitlen SHA2 bitlength. 256 or 384 or 512.
|
13
|
+
def initialize(mode, str=nil, bitlen=256)
|
14
|
+
|
15
|
+
# generate digest instance
|
16
|
+
@digest = Dighasher::DigestGenerator::generate_digest(mode, str, bitlen)
|
17
|
+
@mode = mode
|
18
|
+
@bitlen = bitlen
|
19
|
+
@base_str = str
|
20
|
+
end
|
21
|
+
|
22
|
+
# change hash mode.
|
23
|
+
# @param [integer] mode Hash mode. DigestGenerator::Xxxx constant.
|
24
|
+
# @param [integer] bitlen SHA2 bitlength. 256 or 384 or 512.
|
25
|
+
def change_mode(mode, bitlen=256)
|
26
|
+
|
27
|
+
# generate new digest instance
|
28
|
+
@digest = Dighasher::DigestGenerator::generate_digest(mode, @base_str, bitlen)
|
29
|
+
@mode = mode
|
30
|
+
@bitlen = bitlen
|
31
|
+
end
|
32
|
+
|
33
|
+
# update hash target string.
|
34
|
+
# @param [String] str update string
|
35
|
+
def update(str)
|
36
|
+
|
37
|
+
# unless str, no update.
|
38
|
+
return unless str
|
39
|
+
|
40
|
+
# update str.
|
41
|
+
@digest.update(str)
|
42
|
+
|
43
|
+
# if @base_str equals nil, @base_str set empty.
|
44
|
+
@base_str = '' unless @base_str
|
45
|
+
@base_str << str
|
46
|
+
end
|
47
|
+
|
48
|
+
# reset digest instance.
|
49
|
+
def reset
|
50
|
+
|
51
|
+
# reset @digest
|
52
|
+
@digest.reset
|
53
|
+
@base_str = nil
|
54
|
+
end
|
55
|
+
|
56
|
+
# compare str and hash str.
|
57
|
+
# @param [String] str compare target string
|
58
|
+
# @param [String] temp_add_str temporary additional string.
|
59
|
+
# @return [boolean] true:equal hash / false:not equal hash
|
60
|
+
def equals(str, temp_add_str=nil)
|
61
|
+
|
62
|
+
# if exist temporary add string, dup @digest and add str.
|
63
|
+
eq_digest = get_temporary_digest(temp_add_str)
|
64
|
+
# generate compare digest instance.
|
65
|
+
comp_digest = Dighasher::DigestGenerator.generate_digest(@mode, str, @bitlen)
|
66
|
+
|
67
|
+
# compare hex digest value.
|
68
|
+
return eq_digest == comp_digest.hexdigest
|
69
|
+
end
|
70
|
+
|
71
|
+
# generate hash.
|
72
|
+
# @param [boolean] use_hex_string if true, use hexdigest. else, use digest.
|
73
|
+
# @param [String] temp_add_str temporary additional string.
|
74
|
+
# @return [Byte / String] hash
|
75
|
+
def generate_hash(use_hex_string=true, temp_add_str=nil)
|
76
|
+
|
77
|
+
# if exist temp_add_str, dup @digest and add str.
|
78
|
+
hash_digest = get_temporary_digest(temp_add_str)
|
79
|
+
hash = use_hex_string ? hash_digest.hexdigest : hash_digest.digest
|
80
|
+
hash
|
81
|
+
end
|
82
|
+
|
83
|
+
# generate hash.
|
84
|
+
# reset after generate hash.
|
85
|
+
# @param [boolean] use_hex_string if true, use hexdigest. else, use digest.
|
86
|
+
# @return [Byte / String] hash.
|
87
|
+
def generate_hash!(use_hex_string=true)
|
88
|
+
|
89
|
+
# generate hash and @digest reset.
|
90
|
+
hash = use_hex_string ? @digest.hexdigest! : @digest.digest!
|
91
|
+
@base_str = nil
|
92
|
+
hash
|
93
|
+
end
|
94
|
+
|
95
|
+
# generate file hash.
|
96
|
+
# reset before generate hash.
|
97
|
+
# @param [String] file_path target file path
|
98
|
+
# return [String] hash
|
99
|
+
def file_hash(file_path)
|
100
|
+
|
101
|
+
@digest.reset
|
102
|
+
@base_str = nil
|
103
|
+
@digest.file(file_path).to_s
|
104
|
+
end
|
105
|
+
|
106
|
+
# get digest instance.
|
107
|
+
# @return [Digest] digest lib instance.
|
108
|
+
def digest
|
109
|
+
@digest
|
110
|
+
end
|
111
|
+
|
112
|
+
# get digest mode.
|
113
|
+
# @return [integer] digest mode. DigestGenerator constant.
|
114
|
+
def mode
|
115
|
+
@mode
|
116
|
+
end
|
117
|
+
|
118
|
+
# get byte length
|
119
|
+
# @return [integer] bitlen. Use DigestGenerator::SHA2 mode only.
|
120
|
+
def bitlen
|
121
|
+
@bitlen
|
122
|
+
end
|
123
|
+
|
124
|
+
# get hash base string.
|
125
|
+
# @return [String] hash base string.
|
126
|
+
def base_str
|
127
|
+
@base_str
|
128
|
+
end
|
129
|
+
|
130
|
+
private
|
131
|
+
|
132
|
+
# get temporary digest(dup @digest) and add string.
|
133
|
+
# @param [String] temp_add_str temporary additional string.
|
134
|
+
# @return [String] temporary digest instance.
|
135
|
+
def get_temporary_digest(temp_add_str)
|
136
|
+
|
137
|
+
# if not exist temp_add_str, return @digest
|
138
|
+
return @digest unless temp_add_str
|
139
|
+
|
140
|
+
# dup @digest and add str.
|
141
|
+
temp_digest = @digest.dup
|
142
|
+
temp_digest.update(temp_add_str)
|
143
|
+
temp_digest
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
data/lib/dighasher/version.rb
CHANGED
data/lib/dighasher.rb
CHANGED
@@ -1,150 +1,10 @@
|
|
1
1
|
require "dighasher/version"
|
2
|
+
require "dighasher/generator"
|
2
3
|
require "dighasher/digest_generator"
|
3
4
|
|
4
5
|
# Hash Generate Module
|
5
6
|
module Dighasher
|
6
7
|
|
7
|
-
# Hash Generate Class
|
8
|
-
class Generator
|
9
|
-
|
10
|
-
# constructor
|
11
|
-
# @param [integer] mode Hash mode. DigestGenerator::Xxxx constant.
|
12
|
-
# @param [String] str target string
|
13
|
-
# @param [integer] bitlen SHA2 bitlength. 256 or 384 or 512.
|
14
|
-
def initialize(mode, str=nil, bitlen=256)
|
15
|
-
|
16
|
-
# generate digest instance
|
17
|
-
@digest = Dighasher::DigestGenerator::generate_digest(mode, str, bitlen)
|
18
|
-
@mode = mode
|
19
|
-
@bitlen = bitlen
|
20
|
-
@base_str = str
|
21
|
-
end
|
22
|
-
|
23
|
-
# change hash mode.
|
24
|
-
# @param [integer] mode Hash mode. DigestGenerator::Xxxx constant.
|
25
|
-
# @param [integer] bitlen SHA2 bitlength. 256 or 384 or 512.
|
26
|
-
def change_mode(mode, bitlen=256)
|
27
|
-
|
28
|
-
# generate new digest instance
|
29
|
-
@digest = Dighasher::DigestGenerator::generate_digest(mode, @base_str, bitlen)
|
30
|
-
@mode = mode
|
31
|
-
@bitlen = bitlen
|
32
|
-
end
|
33
|
-
|
34
|
-
# update hash target string.
|
35
|
-
# @param [String] str update string
|
36
|
-
def update(str)
|
37
|
-
|
38
|
-
# unless str, no update.
|
39
|
-
return unless str
|
40
|
-
|
41
|
-
# update str.
|
42
|
-
@digest.update(str)
|
43
|
-
|
44
|
-
# if @base_str equals nil, @base_str set empty.
|
45
|
-
@base_str = '' unless @base_str
|
46
|
-
@base_str << str
|
47
|
-
end
|
48
|
-
|
49
|
-
# reset digest instance.
|
50
|
-
def reset
|
51
|
-
|
52
|
-
# reset @digest
|
53
|
-
@digest.reset
|
54
|
-
@base_str = nil
|
55
|
-
end
|
56
|
-
|
57
|
-
# compare str and hash str.
|
58
|
-
# @param [String] str compare target string
|
59
|
-
# @param [String] temp_add_str temporary additional string.
|
60
|
-
# @return [boolean] true:equal hash / false:not equal hash
|
61
|
-
def equals(str, temp_add_str=nil)
|
62
|
-
|
63
|
-
# if exist temporary add string, dup @digest and add str.
|
64
|
-
eq_digest = get_temporary_digest(temp_add_str)
|
65
|
-
# generate compare digest instance.
|
66
|
-
comp_digest = Dighasher::DigestGenerator.generate_digest(@mode, str, @bitlen)
|
67
|
-
|
68
|
-
# compare hex digest value.
|
69
|
-
return eq_digest == comp_digest.hexdigest
|
70
|
-
end
|
71
|
-
|
72
|
-
# generate hash.
|
73
|
-
# @param [boolean] use_hex_string if true, use hexdigest. else, use digest.
|
74
|
-
# @param [String] temp_add_str temporary additional string.
|
75
|
-
# @return [Byte / String] hash
|
76
|
-
def generate_hash(use_hex_string=true, temp_add_str=nil)
|
77
|
-
|
78
|
-
# if exist temp_add_str, dup @digest and add str.
|
79
|
-
hash_digest = get_temporary_digest(temp_add_str)
|
80
|
-
hash = use_hex_string ? hash_digest.hexdigest : hash_digest.digest
|
81
|
-
hash
|
82
|
-
end
|
83
|
-
|
84
|
-
# generate hash.
|
85
|
-
# reset after generate hash.
|
86
|
-
# @param [boolean] use_hex_string if true, use hexdigest. else, use digest.
|
87
|
-
# @return [Byte / String] hash.
|
88
|
-
def generate_hash!(use_hex_string=true)
|
89
|
-
|
90
|
-
# generate hash and @digest reset.
|
91
|
-
hash = use_hex_string ? @digest.hexdigest! : @digest.digest!
|
92
|
-
@base_str = nil
|
93
|
-
hash
|
94
|
-
end
|
95
|
-
|
96
|
-
# generate file hash.
|
97
|
-
# reset before generate hash.
|
98
|
-
# @param [String] file_path target file path
|
99
|
-
# return [String] hash
|
100
|
-
def file_hash(file_path)
|
101
|
-
|
102
|
-
@digest.reset
|
103
|
-
@base_str = nil
|
104
|
-
@digest.file(file_path).to_s
|
105
|
-
end
|
106
|
-
|
107
|
-
# get digest instance.
|
108
|
-
# @return [Digest] digest lib instance.
|
109
|
-
def digest
|
110
|
-
@digest
|
111
|
-
end
|
112
|
-
|
113
|
-
# get digest mode.
|
114
|
-
# @return [integer] digest mode. DigestGenerator constant.
|
115
|
-
def mode
|
116
|
-
@mode
|
117
|
-
end
|
118
|
-
|
119
|
-
# get byte length
|
120
|
-
# @return [integer] bitlen. Use DigestGenerator::SHA2 mode only.
|
121
|
-
def bitlen
|
122
|
-
@bitlen
|
123
|
-
end
|
124
|
-
|
125
|
-
# get hash base string.
|
126
|
-
# @return [String] hash base string.
|
127
|
-
def base_str
|
128
|
-
@base_str
|
129
|
-
end
|
130
|
-
|
131
|
-
private
|
132
|
-
|
133
|
-
# get temporary digest(dup @digest) and add string.
|
134
|
-
# @param [String] temp_add_str temporary additional string.
|
135
|
-
# @return [String] temporary digest instance.
|
136
|
-
def get_temporary_digest(temp_add_str)
|
137
|
-
|
138
|
-
# if not exist temp_add_str, return @digest
|
139
|
-
return @digest unless temp_add_str
|
140
|
-
|
141
|
-
# dup @digest and add str.
|
142
|
-
temp_digest = @digest.dup
|
143
|
-
temp_digest.update(temp_add_str)
|
144
|
-
temp_digest
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
8
|
# get available hash.
|
149
9
|
def self.available
|
150
10
|
Dighasher::DigestGenerator.available
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dighasher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- h.shigemoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -73,6 +73,7 @@ files:
|
|
73
73
|
- dighasher.gemspec
|
74
74
|
- lib/dighasher.rb
|
75
75
|
- lib/dighasher/digest_generator.rb
|
76
|
+
- lib/dighasher/generator.rb
|
76
77
|
- lib/dighasher/version.rb
|
77
78
|
homepage: https://github.com/h-shigemoto/dighasher
|
78
79
|
licenses:
|