custom-d / hashed-search
为加密数据库列添加可搜索哈希的哈希搜索包
v1.4.0
2024-04-02 00:30 UTC
Requires
- php: ^8.1
- ext-intl: *
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0
README
包描述:允许对加密数据进行哈希以进行搜索的包
安装
通过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
安全性
在可搜索加密中,一个重要的考虑因素是泄露,这是攻击者可以获取的信息。盲目索引泄露了具有相同值的行。如果您将其用于姓氏等字段,攻击者可以使用频率分析来预测值。在攻击者可以控制输入值的主动攻击中,他们可以学习数据库中哪些其他值匹配。
这是一篇关于可搜索加密中泄露的非常好的文章。盲目索引具有与确定性加密相同的泄露。