Sha256: f1852091932d1145582ce5d9a4c144c219cf9ba3ec0f0ccf8b65d16d419bc8f7

Contents?: true

Size: 393 Bytes

Versions: 1

Compression:

Stored size: 393 Bytes

Contents

require "securerandom"

module Stringent
  TABLE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.freeze

  def self.generate(entropy: 256, table: TABLE)
    number = SecureRandom.random_number(2 ** entropy)
    length = (entropy / Math.log2(table.size)).ceil

    Array.new(length) {
      number, modulo = number.divmod(table.size)
      table[modulo]
    }.join
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
stringent-0.0.1 lib/stringent.rb