我有一个Laravel代码库,该记录在插入Mysql数据库之前已加密。使用Crypto methods of the php-encryption library完成加密。如果我想根据加密值之一查找记录,则遍历所有记录都可以:
$encryptedValue = \App\Crypt::encryptData($value);
$records = TheModel::where('thefield', $encryptedValue)->get();
foreach ($records as $record){
print $record->id;
}
不幸的是,这不是很可扩展。数据库仍然很小,但是增长很快,因此我需要更改此代码才能实际执行查询。
所以我尝试了以下代码:
'0x'
但这不会返回任何内容。因此,我发现this SO question建议添加BIN2HEX()
,将其包装在HEX()
或x
中,或在其之前添加x'abcd'
(例如{{1} }。
我尝试添加'0x'
(不起作用),但是我不确定如何将其他想法纳入我的代码中。
有人知道我如何用我的代码尝试这些想法吗?
答案 0 :(得分:2)
您无法使用所使用的工具解决问题。
Laravel的加密方式为randomized(这对安全性而言是件好事,但对于搜索操作而言并不实用)。
签出CipherSweet,它以可与任何数据库驱动程序一起使用的方式实现可搜索的加密。当前没有在任何地方编写Eloquent ORM集成,但是实现起来应该很简单。