【问题标题】:How can I search encrypted data in Laravel using like operator如何使用 like 运算符在 Laravel 中搜索加密数据
【发布时间】:2021-04-27 01:01:46
【问题描述】:

我如何使用like运算符在Laravel中搜索数据,我用过

encrypt($searchValue); 

Crypt::encryptString($searchValue)

但是两者都返回完整的加密数据,但我需要使用 like 运算符搜索数据,在这种情况下,当搜索普通文本时,名字是加密格式,它返回 null


User::where('first_name', 'like', '%' . 'abc' . '%')->get();
//it's return null

当我使用时

//searchValue is like only 'ab'
User::where('first_name', 'like', '%' . Crypt::encryptString($searchValue) . '%')->get();
//it's also return null 

【问题讨论】:

  • $searchValue 是名字的一部分?无法搜索加密字符串的一部分...
  • 您根本无法使用加密数据进行操作。如果有办法实现这一点,则意味着您没有正确加密:D

标签: php laravel laravel-5 encryption laravel-encryption


【解决方案1】:

Crypt::encryptString('abc') 每次调用它时都会输出一个稍微不同的字符串。因此,您不能执行以下操作:

User::where('first_name', 'LIKE', '%abc%')->get();
# OR
User::where('first_name', 'LIKE', '%' . Crypt::encryptString('abc') . '%')->get();

如果您要对字符串进行加密并将其保存到数据库中,关键是您无法将其视为纯文本,并且通过扩展,无法对其进行搜索。

旁注,您的第一个案例%abc%可能返回一个结果,如果另一个加密字符串具有该序列,但这不是搜索@987654324 的未加密值的可靠方法@,所以你不能依赖它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-24
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 2012-09-20
    • 2018-11-02
    相关资源
    最近更新 更多