Class: Krypt::PBKDF2

Inherits:
Object
  • Object
show all
Includes:
Helper::XOR
Defined in:
lib/krypt/pkcs5/pbkdf2.rb

Constant Summary collapse

MAX_FACTOR =
(2 ** 32) - 1

Instance Method Summary collapse

Methods included from Helper::XOR

#xor, #xor!

Constructor Details

#initialize(digest) ⇒ PBKDF2

Returns a new instance of PBKDF2.



7
8
9
10
# File 'lib/krypt/pkcs5/pbkdf2.rb', line 7

def initialize(digest)
  @digest = digest
  @block_size = digest.digest_length
end

Instance Method Details

#generate(pwd, salt, iter, outlen) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/krypt/pkcs5/pbkdf2.rb', line 12

def generate(pwd, salt, iter, outlen)
  raise "outlen too large" if outlen > MAX_FACTOR * @block_size

  @digest.reset
  num_blocks = (outlen.to_f / @block_size).ceil
  # enforces ASCII-8BIT
  String.new.tap do |result|
    1.upto(num_blocks) { |i| result << f(pwd, salt, iter, i) }
  end.slice(0, outlen)
end

#generate_hex(pwd, salt, iter, outlen) ⇒ Object



23
24
25
# File 'lib/krypt/pkcs5/pbkdf2.rb', line 23

def generate_hex(pwd, salt, iter, outlen)
  Krypt::Hex.encode(generate(pwd, salt, iter, outlen))
end