3

我已经在我的应用程序中设置了attr_encrypted,每条记录都有单独的“iv”。

# Fields
User.e_name
User.e_name_iv

我正在尝试在 User 表中搜索已知名称。我试过了:

User.find_by_name("Joe Bloggs") # undefined method "find_by_name" for Class
User.where("name = ?", "Joe Bloggs").first # column "name" does not exist
User.where(:e_name => User.encrypt_name("Joe Bloggs"))  # must specify an iv

如何通过名称找到记录?

4

1 回答 1

1

虽然可以进行一些搜索,但这不是很实用。您可能必须遍历每个记录,尝试每个相应的 IV,直到您获得完全匹配,这取决于您拥有的记录数量,这不是很实用。

你读过自述文件吗?https://github.com/attr-encrypted/attr_encrypted#things-to-consider-before-using-attr_encrypted

搜索、加入等

虽然选择在属性级别进行加密是最安全的解决方案,但它并非没有缺点。即,您无法搜索加密数据,并且由于您无法搜索它,因此您也无法对其进行索引。您也不能对加密数据使用连接。安全加密的数据实际上是噪音。因此,任何依赖于非噪声数据的操作都将不起作用。如果您需要执行上述任何操作,请考虑使用数据库和文件系统加密以及传输加密,因为它在您的堆栈中移动。

于 2017-08-04T13:07:53.600 回答