鉴于 Laravel 的
但这太糟糕了。我不想搜索所有的内容。
Crypt
总是添加 salt,因此相同加密的两个实例永远不同。通常情况下,这没问题,因为可以比较两个解密后的值。但是,如果我想要在数据库中搜索一个加密的值呢?例如,我有一个名为 users
的表格,我想要加密电子邮件地址,并通过电子邮件地址 test@email.com
查找某人。如何编写此查询?我不能只使用 Crypt::encrypt($email)
并进行搜索,因为此次 encrypt
的迭代与数据库中的迭代不同。
编辑
目前,我唯一能想到的方法就是获取所有数据,然后筛选它们:$match = User::all()->filter(function($record) use($email) {
$field = $record->email['email'];
if(Crypt::decrypt($field) == $email) return $record;
});
但这太糟糕了。我不想搜索所有的内容。
key
和iv
对数据进行加密。扩展Crypt类以实现这一点并不难。 - Jeemusu