класс ActiveRecord::Encryption::KeyGenerator
Утилита для генерации и получения производных случайных ключей.
Атрибуты
Публичные методы класса
# File activerecord/lib/active_record/encryption/key_generator.rb, line 11 def initialize(hash_digest_class: ActiveRecord::Encryption.config.hash_digest_class) @hash_digest_class = hash_digest_class end
Публичные методы экземпляра
# File activerecord/lib/active_record/encryption/key_generator.rb, line 38
def derive_key_from(password, length: key_length)
ActiveSupport::KeyGenerator.new(password, hash_digest_class: hash_digest_class)
.generate_key(key_derivation_salt, length)
end Создает производный ключ на основе указанного пароля. Размер ключа в байтах составит :length (по умолчанию используется длина Cipher)
Сгенерированный ключ будет дополнен солью со значением ActiveRecord::Encryption.key_derivation_salt
# File activerecord/lib/active_record/encryption/key_generator.rb, line 30
def generate_random_hex_key(length: key_length)
generate_random_key(length: length).unpack("H*")[0]
end Возвращает случайный ключ в шестнадцатеричном формате. Размер ключа в байтах составит :length (по умолчанию используется длина Cipher)
Шестнадцатеричный формат удобен для представления ключей в виде печатного текста. Чтобы максимально увеличить пространство используемых символов, рекомендуется включать непечатные символы. Шестнадцатеричный формат гарантирует, что сгенерированные ключи можно представить обычным текстом.
Чтобы преобразовать ключ обратно в исходную строку нужной длины:
[ value ].pack("H*")
# File activerecord/lib/active_record/encryption/key_generator.rb, line 16 def generate_random_key(length: key_length) SecureRandom.random_bytes(length) end
Возвращает случайный ключ. Размер ключа в байтах составит :length (по умолчанию используется длина Cipher)
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.