Module: Idiot
- Extended by:
- Idiot
- Included in:
- Idiot
- Defined in:
- lib/idiot.rb,
lib/idiot/config.rb,
lib/idiot/version.rb
Defined Under Namespace
Modules: Config
Constant Summary collapse
- VERSION =
"0.0.1"
Instance Method Summary collapse
Instance Method Details
#decode(str) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/idiot.rb', line 49 def decode(str) initialize str.reverse! result = 0 len = str.size - 1 (0..len).each do |i| bcp = @base ** (len - i) result += @index.index(str.slice(i, 1)) * bcp end result -= @base ** (@pad_up - 1) result.to_i end |
#encode(num) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/idiot.rb', line 32 def encode(num) initialize num += @base ** (@pad_up - 1) result = "" n = Math.log(num, @base).floor n.step(0, -1) {|i| bcp = @base ** i a = ((num / bcp) % @base).floor result << @index.slice(a, 1) num = num - (a * bcp) } result.reverse! end |
#initialize ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/idiot.rb', line 13 def initialize @index = Idiot::Config.alphabet pass_key = Idiot::Config.pass_key i = @index.split(//) passhash = (Digest::SHA2.new << pass_key).to_s passhash = if passhash.size < @index.size (Digest::SHA2.new(512) << pass_key).to_s else passhash end p = passhash.split(//) @index = i.zip(p).sort{|x, y| x[1] <=> y[1] }.collect{|x| x[0]}.join @base = @index.size @pad_up = 5 end |