Class: Krypt::PBKDF2
- Inherits:
-
Object
- Object
- Krypt::PBKDF2
- Includes:
- Helper::XOR
- Defined in:
- lib/krypt/pkcs5/pbkdf2.rb
Constant Summary collapse
- MAX_FACTOR =
(2 ** 32) - 1
Instance Method Summary collapse
- #generate(pwd, salt, iter, outlen) ⇒ Object
- #generate_hex(pwd, salt, iter, outlen) ⇒ Object
-
#initialize(digest) ⇒ PBKDF2
constructor
A new instance of PBKDF2.
Methods included from Helper::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 |