класс ActiveSupport::KeyGenerator
KeyGenerator — это простой обертка над реализацией PBKDF2 OpenSSL. Он может использоваться для вывода ряда ключей для различных целей из заданного секрета. Это позволяет приложениям Rails иметь один безопасный секрет, но избегать повторного использования этого ключа в нескольких несовместимых контекстах.
Публичные методы класса
# File activesupport/lib/active_support/key_generator.rb, line 21 def hash_digest_class @hash_digest_class ||= OpenSSL::Digest::SHA1 end
# File activesupport/lib/active_support/key_generator.rb, line 13
def hash_digest_class=(klass)
if klass.kind_of?(Class) && klass < OpenSSL::Digest
@hash_digest_class = klass
else
raise ArgumentError, "#{klass} is expected to be an OpenSSL::Digest subclass"
end
end # File activesupport/lib/active_support/key_generator.rb, line 26
def initialize(secret, options = {})
@secret = secret
# The default iterations are higher than required for our key derivation uses
# on the off chance someone uses this for password storage
@iterations = options[:iterations] || 2**16
# Also allow configuration here so people can use this to build a rotation
# scheme when switching the digest class.
@hash_digest_class = options[:hash_digest_class] || self.class.hash_digest_class
end Публичные методы экземпляра
# File activesupport/lib/active_support/key_generator.rb, line 39 def generate_key(salt, key_size = 64) OpenSSL::PKCS5.pbkdf2_hmac(@secret, salt, @iterations, key_size, @hash_digest_class.new) end
Возвращает производный ключ, подходящий для использования. Значение по умолчанию для key_size выбрано совместимым с настройками по умолчанию ActiveSupport::MessageVerifier. т.е. OpenSSL::Digest::SHA1#block_length
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.