Spec-Zone.ru › Ruby on Rails 7.1

класс ActiveRecord::Encryption::Encryptor

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

Шифратор предоставляет API шифрования, которое ActiveRecord::Encryption::EncryptedAttributeType использует для шифрования и расшифрования значений атрибутов.

Он взаимодействует с KeyProvider для получения ключей и делегирует ActiveRecord::Encryption::Cipher фактический алгоритм шифрования.

Константы

DECRYPT_ERRORS
ENCODING_ERRORS
ПОРОГ_ДЛЯ_ОБОСНОВАНИЯ_СЖАТИЯ

Открытые методы экземпляра

decrypt(encrypted_text, key_provider: default_key_provider, cipher_options: {}) Показать исходный код
# File activerecord/lib/active_record/encryption/encryptor.rb, line 52
def decrypt(encrypted_text, key_provider: default_key_provider, cipher_options: {})
  message = deserialize_message(encrypted_text)
  keys = key_provider.decryption_keys(message)
  raise Errors::Decryption unless keys.present?
  uncompress_if_needed(cipher.decrypt(message, key: keys.collect(&:secret), **cipher_options), message.headers.compressed)
rescue *(ENCODING_ERRORS + DECRYPT_ERRORS)
  raise Errors::Decryption
end

Расшифровывает clean_text и возвращает результат как чистый текст

Параметры

:key_provider

Key поставщик для операции шифрования. По умолчанию используется ActiveRecord::Encryption.key_provider, если не указано иное

:cipher_options

Параметры, специфичные для шифра, которые будут переданы Cipher, настроенному в ActiveRecord::Encryption.cipher

encrypt(clear_text, key_provider: default_key_provider, cipher_options: {}) Показать исходный код
# File activerecord/lib/active_record/encryption/encryptor.rb, line 34
def encrypt(clear_text, key_provider: default_key_provider, cipher_options: {})
  clear_text = force_encoding_if_needed(clear_text) if cipher_options[:deterministic]

  validate_payload_type(clear_text)
  serialize_message build_encrypted_message(clear_text, key_provider: key_provider, cipher_options: cipher_options)
end

Шифрует clean_text и возвращает зашифрованный результат

Внутренне он:

  1. Создаёт новый ActiveRecord::Encryption::Message

  2. Сжимает и шифрует clean_text в качестве полезной нагрузки сообщения

  3. Сериализует его с помощью ActiveRecord::Encryption.message_serializer (ActiveRecord::Encryption::SafeMarshal по умолчанию)

  4. Кодирует результат с помощью Base 64

Параметры

:key_provider

Key поставщик для операции шифрования. По умолчанию используется ActiveRecord::Encryption.key_provider, если не указано иное.

:cipher_options

Параметры, специфичные для шифра, которые будут переданы Cipher, настроенному в ActiveRecord::Encryption.cipher

encrypted?(text) Показать исходный код
# File activerecord/lib/active_record/encryption/encryptor.rb, line 62
def encrypted?(text)
  deserialize_message(text)
  true
rescue Errors::Encoding, *DECRYPT_ERRORS
  false
end

Возвращает значение true, если текст зашифрован, и false в противном случае

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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