更新其他密钥的加密字段

时间:2018-10-02 12:49:13

标签: ruby-on-rails attr-encrypted

实际上,我开始使用硬编码密钥加密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 :(得分: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(以便其他代码继续运行)。