0

実際には、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

すでに暗号化されているデータを現在のキーで暗号化するにはどうすればよいですか?

4

1 に答える 1

1

あなたができることは、新しいキーで別のフィールドを書くことです:

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 に名前変更します (他のコードが機能し続けるように)。

于 2018-10-02T12:57:17.090 に答える