Обновить зашифрованные поля для другого ключа - PullRequest
0 голосов
/ 02 октября 2018

На самом деле я начал с шифрования поля user_pass жестко закодированным ключом.

class Credential < ApplicationRecord
  ..
  attr_encrypted :user_pass, key: 'This is a key that is 256 bits!!'
  ..
end

У меня уже есть данные, зашифрованные этим ключом.Теперь я не хочу сохранять ключ в жестко запрограммированном формате, поэтому сохраняю половину ключа в файловой системе и другую половину в таблице и объединяю их.

class Credential < ApplicationRecord
  ..
  attr_encrypted :user_pass, key: :encryption_key
  ..

  def encryption_key
    Rails.root.join('private', 'key').read + Setting.where(name: 'key').last.value
  end
end

Как зашифровать уже зашифрованные данные с помощьютекущий ключ?

1 Ответ

0 голосов
/ 02 октября 2018

Что вы можете сделать, это написать другое поле с новым ключом:

attr_encrypted :user_pass, key: 'This is a key that is 256 bits!!'
attr_encrypted :user_pass2, key: :encryption_key

Затем вы можете перенести данные.

credential.user_pass2 = user.user_pass
credential.save

После этогоМиграция завершена, вы можете указать другой код в новом поле.Или удалите / переименуйте старый и переименуйте user_pass2 в user_pass (чтобы другой код продолжал работать).

...