Php 使用datatables的Laravel:搜索加密数据
我在使用Laravel的datatables时遇到了一个很大的问题。我有一个模型,它有3个值,由setter/getter自动加密(使用Crypt) 我使用datatables来呈现表,方法是:Php 使用datatables的Laravel:搜索加密数据,php,laravel,performance,encryption,datatable,Php,Laravel,Performance,Encryption,Datatable,我在使用Laravel的datatables时遇到了一个很大的问题。我有一个模型,它有3个值,由setter/getter自动加密(使用Crypt) 我使用datatables来呈现表,方法是: return datatables()->of(Patient::query()) ->addColumn('name_surname', function($row){ return $row->name.' '.$row->su
return datatables()->of(Patient::query())
->addColumn('name_surname', function($row){
return $row->name.' '.$row->surname;
})
->make(true);
将模型传递到datatable有3种方法:
public function getAttribute($key)
{
$value = parent::getAttribute($key);
if (in_array($key, $this->encryptable)) {
$value = Crypt::decrypt($value);
} return $value;
}
public function setAttribute($key, $value)
{
if (in_array($key, $this->encryptable)) {
$value = Crypt::encrypt($value);
}
return parent::setAttribute($key, $value);
}
更新(2019-06-02):有一个独立的库实现了这一点,称为。此外,还有一个Laravel适配器
这已经在一篇题为(恰当地)的博客文章中得到了回答。您可以通过问自己以下问题来扩展其内容:
- 如果它受到损害,人们的生活可能会受到严重影响:使用KDF作为盲指数
- 不太好:使用HMAC作为盲索引
- 从未发生冲突:使用完整的KDF/HMAC输出
- 冲突确定:截断(节省存储空间),用作Bloom过滤器
crypto\u secretbox()
,每条消息都有一个随机的nonce),您将使用HMAC/PBKDF2和不同的键,生成明文的盲索引,与密文一起存储(即单独的列)
与其查询密文,只需重建盲索引,然后解密结果。这为您提供了快速、可靠的搜索操作,同时仍然提供语义安全的数据加密