实现一种简单的信封加密方法,其中
-
它为每次加密操作生成一个随机的数据加密密钥。
-
它将生成的密钥与加密后的有效载荷一起存储。它使用在
active_record_encryption.primary_key
凭据中提供的主密钥加密此密钥。
此提供程序可以与多个主密钥一起使用。它将使用最后一个主密钥进行加密。
当 config.active_record.encryption.store_key_references
为 true 时,它还将存储对用于加密数据加密密钥的特定主密钥的引用。如果未设置,它将尝试所有已配置的主密钥以查找正确的密钥,以便返回正确的解密密钥。
方法
实例公共方法
active_primary_key() 链接
源代码:显示 | 在 GitHub 上
# File activerecord/lib/active_record/encryption/envelope_encryption_key_provider.rb, line 31 def active_primary_key @active_primary_key ||= primary_key_provider.encryption_key end
decryption_keys(encrypted_message) 链接
源代码:显示 | 在 GitHub 上
# File activerecord/lib/active_record/encryption/envelope_encryption_key_provider.rb, line 26 def decryption_keys(encrypted_message) secret = decrypt_data_key(encrypted_message) secret ? [ActiveRecord::Encryption::Key.new(secret)] : [] end
encryption_key() 链接
源代码:显示 | 在 GitHub 上
# File activerecord/lib/active_record/encryption/envelope_encryption_key_provider.rb, line 18 def encryption_key random_secret = generate_random_secret ActiveRecord::Encryption::Key.new(random_secret).tap do |key| key.public_tags.encrypted_data_key = encrypt_data_key(random_secret) key.public_tags.encrypted_data_key_id = active_primary_key.id if ActiveRecord::Encryption.config.store_key_references end end