Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于大文本,我应该使用哪种哈希方法?-PHP/MYSQL_Php_Mysql_Hash - Fatal编程技术网

对于大文本,我应该使用哪种哈希方法?-PHP/MYSQL

对于大文本,我应该使用哪种哈希方法?-PHP/MYSQL,php,mysql,hash,Php,Mysql,Hash,我的数据库中存储的大部分文本大小在1MB到1.5MB之间。但不能超过1.5MB,因为这是我设定的限制 以下是我的需要: 我需要它来降低我的mysql数据库大小 我需要它尽可能快 不需要保安 它必须正确工作,这样字符串_1和字符串_2就永远不会有相同的散列 我使用PHP和MYSQL。我建议使用SHA1,因为git和类似的应用程序也在使用它来识别字符串 见: 以及: 我假设您需要一个压缩算法来减少文本大小 请参阅。哈希是不可逆的。您可以借助哈希将1.5MB的文本转换为小字符串,但无法将相同的哈希

我的数据库中存储的大部分文本大小在1MB到1.5MB之间。但不能超过1.5MB,因为这是我设定的限制

以下是我的需要:

  • 我需要它来降低我的mysql数据库大小
  • 我需要它尽可能快
  • 不需要保安
  • 它必须正确工作,这样字符串_1和字符串_2就永远不会有相同的散列

我使用PHP和MYSQL。

我建议使用SHA1,因为git和类似的应用程序也在使用它来识别字符串

见: 以及:


我假设您需要一个压缩算法来减少文本大小


请参阅。

哈希是不可逆的。您可以借助哈希将1.5MB的文本转换为小字符串,但无法将相同的哈希转换回原始文本

你要找的是一个压缩算法。通过压缩,您可以使文件变得更小,但不可能像散列一样小。

节省空间
  • MySQL具有内置的和函数,可以节省数据库中的空间,还需要编写额外的PHP代码
检查唯一性
  • 不必为
    文本
    列编制索引[不管它们是否被压缩],您可以存储和索引2个相对较小的内容,以确保该文本是唯一的

  • 数据的散列,MD5,SHA,任何你们想要的
  • 未压缩数据的长度
  • 对于大多数散列函数来说,你更容易被流星击中,而不是对不同的文本字符串使用两个相同的散列,拥有两个相同长度和散列字符串的可能性要小于同时赢得三次彩票时被流星和闪电击中的可能性


您正在寻找哈希或压缩算法吗?您不能通过添加更多数据来降低数据库的大小,那么您打算如何处理这些哈希?它们代表什么?你在散列什么样的数据?该数据的字节长度有上限和下限吗?至于最后一点:那是不可能的。鸽子洞原理告诉我们,如果散列函数减少了数据的大小,那么可能会发生冲突。这就是hash()的本质。嗯,hash通常是可版本的。把一个1.5mb的大文件变成一个32个字符长的字符串真是太棒了!不,你不能像那样散列和取消散列。您可以压缩文本并将其缩小到较小的大小,但不能压缩到那种大小。很抱歉
$hash = hash( 'sha1', $inputData );