custom-d/hashed-search

为加密数据库列添加可搜索哈希的哈希搜索包

v1.4.0 2024-04-02 00:30 UTC

This package is auto-updated.

Last update: 2024-09-02 01:44:56 UTC


README

PHP Composer Packagist Packagist Release

包描述:允许对加密数据进行哈希以进行搜索的包

安装

通过composer安装

composer require custom-d/hashed-search

发布包资源

php artisan vendor:publish --provider="CustomD\HashedSearch\ServiceProvider"

使用

Eloqent Models

在你的模型中添加 use CustomD\HashedSearch\Contracts\HasSearchableHash; 特性,并添加一个新属性 protected $searchableHash = ['bank_name'];

例如

<?php

namespace App\Models;

...
use CustomD\EloquentModelEncrypt\ModelEncryption;
use CustomD\HashedSearch\Contracts\HasSearchableHash;

class EncryptedModel extends Model
{
    use ModelEncryption;
    use HasSearchableHash;


    protected $searchableHash = ['encryp_column_1','encypted_column_2'];
...
}

现在在每次保存事件中,它将更新这些列的搜索哈希。

搜索

EncryptdModel::searchHashedField('encryp_column_1','clear text here');

手动使用

您可以通过运行以下代码手动哈希项

\CustomD\HashedSearch\Facades\HashedSearch::create('string to hash');

方法

\CustomD\HashedSearch\Facades\HashedSearch 类具有以下方法

  • create(string $value, string $saltModifier = "" ): ?string
  • setSalt(string salt): SELF
  • setTransliterator(string rule): SELF
  • setHashes(?string $cypherA = null, ?string $cypherB = null): SELF

安全性

在可搜索加密中,一个重要的考虑因素是泄露,这是攻击者可以获取的信息。盲目索引泄露了具有相同值的行。如果您将其用于姓氏等字段,攻击者可以使用频率分析来预测值。在攻击者可以控制输入值的主动攻击中,他们可以学习数据库中哪些其他值匹配。

这是一篇关于可搜索加密中泄露的非常好的文章。盲目索引具有与确定性加密相同的泄露。

鸣谢