【发布时间】:2019-03-31 08:52:03
【问题描述】:
我有一个 Laravel 代码库,记录在插入 Mysql 数据库之前已加密。使用Crypto methods of the php-encryption library 完成加密。如果我想根据其中一个加密值查找记录,则循环遍历所有记录即可:
$records = TheModel::all();
foreach ($records as $record){
if ($record->thefield == $value) { // thefield is decrypted in the Eloquent model definition
print $record->id;
}
}
不幸的是,这不是很好的可扩展性。数据库仍然很小,但增长很快,所以我需要更改此代码以实际执行查询。
所以我尝试了以下代码:
$encryptedValue = \App\Crypt::encryptData($value);
$records = TheModel::where('thefield', $encryptedValue)->get();
foreach ($records as $record){
print $record->id;
}
但这不会返回任何东西。于是我又找到this SO question,建议加'0x',用BIN2HEX()或HEX()包起来,或者在它前面加x(比如x'abcd')。
我尝试添加 '0x'(这不起作用),但我不确定如何将其他想法合并到我的代码中。
有人知道我如何用我的代码尝试这些想法吗?
【问题讨论】:
标签: php mysql laravel encryption binary