base_convert 7.0.221226 → 7.1.221229
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/README.md +18 -1
- data/lib/base_convert/entropia.rb +27 -0
- data/lib/base_convert/from_to.rb +3 -1
- data/lib/base_convert/number.rb +6 -4
- data/lib/base_convert.rb +8 -7
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e62555a1cac5c3cc428ae0f52eb84cbbd70fc787ab993f8701da0afbef33e294
|
|
4
|
+
data.tar.gz: e6aa7f64c059deaffea59fe4afb4b5451528e12647faeedfac3cc6dad4209075
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: afcde575138364982a1f4fd77a677434bbf5e1fc54d035d11386cd28d271c664a05e02dc24c3faea0b60b07c4dfaa6a01c1a6e8ea3bce90ccd84f9da4050a9b9
|
|
7
|
+
data.tar.gz: 2efec8ea4e321658c83416f68de75e37b13ae1d341f4a762645808eba08c02e2c1edf90082404a596983149c90d60c4950388588b0b5ee365f027c8d9e62a121
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# BaseConvert
|
|
2
2
|
|
|
3
|
-
* [VERSION 7.
|
|
3
|
+
* [VERSION 7.1.221229](https://github.com/carlosjhr64/base_convert/releases)
|
|
4
4
|
* [github](https://www.github.com/carlosjhr64/base_convert)
|
|
5
5
|
* [rubygems](https://rubygems.org/gems/base_convert)
|
|
6
6
|
|
|
@@ -217,6 +217,23 @@ c = b.to_base(64, :B64)
|
|
|
217
217
|
c #=> // 64:B64
|
|
218
218
|
c.to_i #=> 4095
|
|
219
219
|
```
|
|
220
|
+
### class Entropia
|
|
221
|
+
|
|
222
|
+
A quick way to generate passwords.
|
|
223
|
+
```ruby
|
|
224
|
+
include BaseConvert
|
|
225
|
+
e = Entropia.new
|
|
226
|
+
e.inspect #~> ^.{39} 95:P95$
|
|
227
|
+
e.to_s #~> ^.{39}$
|
|
228
|
+
e.length #=> 39
|
|
229
|
+
e.bits #=> 256.224368724907
|
|
230
|
+
require 'securerandom'
|
|
231
|
+
e = Entropia.new base: 16, bits: 32, rng: SecureRandom
|
|
232
|
+
e.inspect #~> ^\h{8} 16:P95$
|
|
233
|
+
e.to_s #~> ^\h{8}$
|
|
234
|
+
e.length #=> 8
|
|
235
|
+
e.bits #=> 32.0
|
|
236
|
+
```
|
|
220
237
|
## LICENSE:
|
|
221
238
|
|
|
222
239
|
(The MIT License)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module BaseConvert
|
|
2
|
+
class Entropia < Number
|
|
3
|
+
def Entropia.bits_length_entropy(bits_request, base)
|
|
4
|
+
n,e,entropy = 0,1,2**bits_request
|
|
5
|
+
while e < entropy
|
|
6
|
+
n += 1
|
|
7
|
+
e *= base
|
|
8
|
+
end
|
|
9
|
+
b=Math.log(e,2)
|
|
10
|
+
# Actual bits, length, and entropy
|
|
11
|
+
return b,n,e
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
attr_reader :bits, :length, :entropy
|
|
15
|
+
def initialize(counter=nil, base: 95, digits: :P95, validate: true,
|
|
16
|
+
bits: 256, rng: Random)
|
|
17
|
+
@bits,@length,@entropy = Entropia.bits_length_entropy(bits,base)
|
|
18
|
+
counter = rng.random_number(@entropy) unless counter
|
|
19
|
+
super(counter, base:base, digits:digits, validate:validate)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def to_s
|
|
23
|
+
(@length - (string=tos).length).times{string.prepend self.digits[0]}
|
|
24
|
+
return string
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/base_convert/from_to.rb
CHANGED
|
@@ -7,7 +7,9 @@ class FromTo
|
|
|
7
7
|
to_base = BASE[to_base]
|
|
8
8
|
digits = DIGITS[digits]
|
|
9
9
|
to_digits = DIGITS[to_digits]
|
|
10
|
-
|
|
10
|
+
if base > digits.length or to_base > to_digits.length
|
|
11
|
+
raise 'base must cover digits'
|
|
12
|
+
end
|
|
11
13
|
@base, @to_base, @digits, @to_digits = base, to_base, digits, to_digits
|
|
12
14
|
end
|
|
13
15
|
|
data/lib/base_convert/number.rb
CHANGED
|
@@ -35,7 +35,7 @@ class Number
|
|
|
35
35
|
when String
|
|
36
36
|
string = counter
|
|
37
37
|
if base.nil? and digits.nil?
|
|
38
|
-
base,
|
|
38
|
+
base,digits = Number.infer(counter, error:'need digits to cover string')
|
|
39
39
|
end
|
|
40
40
|
when Integer
|
|
41
41
|
@integer = counter
|
|
@@ -56,12 +56,12 @@ class Number
|
|
|
56
56
|
raise 'digits must cover base' if @base > @digits.length
|
|
57
57
|
unless string.nil? or string.empty?
|
|
58
58
|
indeces = string.chars.map{@digits.index _1}
|
|
59
|
-
if missing
|
|
59
|
+
if missing=indeces.any?{_1.nil?} or exceeding=indeces.any?{_1>=@base}
|
|
60
60
|
if @base <= INDEXa and DIGITS[:P95].start_with?(@digits)
|
|
61
61
|
# User ignored case, so fix it...
|
|
62
62
|
string = string.upcase
|
|
63
63
|
indeces = string.chars.map{@digits.index _1}
|
|
64
|
-
missing
|
|
64
|
+
missing=indeces.any?{_1.nil?} or exceeding=indeces.any?{_1>=@base}
|
|
65
65
|
end
|
|
66
66
|
raise 'digits must cover string' if missing
|
|
67
67
|
raise 'digits in string must be under base' if exceeding
|
|
@@ -84,7 +84,9 @@ class Number
|
|
|
84
84
|
alias to_s tos
|
|
85
85
|
def to_i = @integer
|
|
86
86
|
|
|
87
|
-
def to_base(base,
|
|
87
|
+
def to_base(base,
|
|
88
|
+
digits = (base.is_a?Symbol)? DIGITS[base] : @digits,
|
|
89
|
+
validate = @validate)
|
|
88
90
|
Number.new @integer, base: base, digits: digits, validate: validate
|
|
89
91
|
end
|
|
90
92
|
|
data/lib/base_convert.rb
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
module BaseConvert
|
|
2
|
-
VERSION = '7.
|
|
3
|
-
autoload :Methods,
|
|
4
|
-
autoload :Chars,
|
|
5
|
-
autoload :DIGITS,
|
|
6
|
-
autoload :BASE,
|
|
7
|
-
autoload :FromTo,
|
|
8
|
-
autoload :Number,
|
|
2
|
+
VERSION = '7.1.221229'
|
|
3
|
+
autoload :Methods, 'base_convert/methods.rb'
|
|
4
|
+
autoload :Chars, 'base_convert/chars.rb'
|
|
5
|
+
autoload :DIGITS, 'base_convert/digits.rb'
|
|
6
|
+
autoload :BASE, 'base_convert/base.rb'
|
|
7
|
+
autoload :FromTo, 'base_convert/from_to.rb'
|
|
8
|
+
autoload :Number, 'base_convert/number.rb'
|
|
9
|
+
autoload :Entropia, 'base_convert/entropia.rb'
|
|
9
10
|
end
|
|
10
11
|
#`ruby`
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: base_convert
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 7.
|
|
4
|
+
version: 7.1.221229
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- CarlosJHR64
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-12-
|
|
11
|
+
date: 2022-12-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: |
|
|
14
14
|
BaseConvert - Number base conversion.
|
|
@@ -27,6 +27,7 @@ files:
|
|
|
27
27
|
- lib/base_convert/base.rb
|
|
28
28
|
- lib/base_convert/chars.rb
|
|
29
29
|
- lib/base_convert/digits.rb
|
|
30
|
+
- lib/base_convert/entropia.rb
|
|
30
31
|
- lib/base_convert/from_to.rb
|
|
31
32
|
- lib/base_convert/methods.rb
|
|
32
33
|
- lib/base_convert/number.rb
|