【发布时间】:2016-02-28 10:37:47
【问题描述】:
所以我在我的表中加密了记录,我想搜索这些记录。问题是,当我再次搜索并加密我的搜索词时,它会再次对其进行加密,生成不同的随机字符串。
有没有办法加密数据,这样当再次加密相同的数据时,它会产生与第一次加密时相同的字符串?
示例:我正在使用 CI 加密库的默认设置
$data = "ABC";
$stored_data = $this->encryption->encrypt( $data );
$search = "ABC";
$search_data = $this->encryption->encrypt( $data );
if( $search_data == $stored_data ){
var_dump("Found it");
}else{
var_dump("No results");
}
上面产生了不同的随机字符串,所以没有办法搜索加密数据。这种问题有解决办法吗
【问题讨论】:
-
您不想加密,而是要散列,对吗? CI 的加密通过身份验证提供语义安全。您可以在构造过程中使用 pass
array("mode" => "ecb")作为参数,但我认为您不应该这样做。 -
无法搜索正确加密的数据......就是这样。如果密文总是相同的,它就不安全了。因此,无论您尝试做什么,它都不会以这种方式工作,您需要考虑另一种解决方案。
-
谢谢,我想唯一的解决方案是不加密需要搜索的字段..
-
有一种方法可以做你想做的事,但仅限于“这个确切的字符串存在吗?y/n”:paragonie.com/white-paper/…
标签: php codeigniter encryption codeigniter-3