更新不同密钥的加密字段
Update encrypted fields for a different key
实际上,我是从使用硬编码密钥加密 user_pass
字段开始的。
class Credential < ApplicationRecord
..
attr_encrypted :user_pass, key: 'This is a key that is 256 bits!!'
..
end
我已经使用此密钥加密了一些数据。现在,我不想以硬编码格式保存密钥,所以将一半密钥保存在文件系统中,另一半保存在 table 中并将它们组合起来。
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
如何使用当前密钥加密已加密的数据?
你可以做的是写另一个字段,使用新键:
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
迁移完成后,您可以将其他代码指向新字段。或者 drop/rename 旧的并将 user_pass2 重命名为 user_pass (以便其他代码继续工作)。
实际上,我是从使用硬编码密钥加密 user_pass
字段开始的。
class Credential < ApplicationRecord
..
attr_encrypted :user_pass, key: 'This is a key that is 256 bits!!'
..
end
我已经使用此密钥加密了一些数据。现在,我不想以硬编码格式保存密钥,所以将一半密钥保存在文件系统中,另一半保存在 table 中并将它们组合起来。
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
如何使用当前密钥加密已加密的数据?
你可以做的是写另一个字段,使用新键:
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
迁移完成后,您可以将其他代码指向新字段。或者 drop/rename 旧的并将 user_pass2 重命名为 user_pass (以便其他代码继续工作)。