Spec-Zone.ru › Ruby on Rails 7.2

класс ActiveRecord::Encryption::KeyGenerator

Родитель:
Объект

Утилита для генерации и получения случайных ключей.

Атрибуты

hash_digest_class[R]

Публичные методы класса

new(hash_digest_class: ActiveRecord::Encryption.config.hash_digest_class) Показать исходный код
# 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

Публичные методы экземпляра

derive_key_from(password, length: key_length) Показать исходный код
# 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.

generate_random_hex_key(length: key_length) Показать исходный код
# 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*")
generate_random_key(length: key_length) Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API