首页 >后端开发 >php教程 >简述php对文件进行hash运算

简述php对文件进行hash运算

墨辰丷
墨辰丷原创
2018-06-11 17:00:312123浏览

这篇文章主要介绍了php对文件进行hash运算的方法,涉及针对文件的hash运算技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了php对文件进行hash运算的方法。具体如下:

这段代码非常有用,如果你下载了一个文件,网站提供了hash结果,你可以对你下载下来的文件进行hash运算,以验证下载的文件是否正确。

<html>
<head>
  <title>Hash (Check) Files</title>
  <style type=&#39;text/css&#39;>
   #ok{color:green;}
   #nono{color:red;}
  </style>
</head>
<body>
 <?php
   if(!empty($_FILES)){
   if ($_FILES["file"]["error"] > 0){
    switch($_FILES["file"]["error"]){
     case 1:
     echo "<b id=&#39;nono&#39;>Error: The uploaded file exceeds the upload_max_filesize directive in php.ini</b><br>";
     break;
     case 2:
     echo "<b id=&#39;nono&#39;>Error: The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.</b><br>";
     break;
     case 3:
     echo "<b id=&#39;nono&#39;>Error: The uploaded file was only partially uploaded.</b><br>";
     break;
     case 4:
     echo "<b id=&#39;nono&#39;>Error: No file was uploaded.</b><br>";
     break;
     case 6:
     echo "<b id=&#39;nono&#39;>Error: Missing a temporary folder.</b><br>";
     break;
     case 7:
     echo "<b id=&#39;nono&#39;>Error: Failed to write file to disk.</b><br>";
     break;
     case 8:
     echo "<b id=&#39;nono&#39;>Error: A PHP extension stopped the file upload.</b><br>";
     break;
     default:
     echo "<b id=&#39;nono&#39;>Unknown error occured.</b><br>";
    }
   } else {
    echo &#39;Upload: &#39; . $_FILES[&#39;file&#39;][&#39;name&#39;] . &#39;<br>&#39;;
    echo &#39;Type: &#39; . $_FILES[&#39;file&#39;][&#39;type&#39;] . &#39;<br>&#39;;
    echo &#39;Size: &#39; . (round($_FILES[&#39;file&#39;][&#39;size&#39;] / 1024, 2)) . &#39; Kb<br><br>&#39;;
    if(array_search($_POST[&#39;algo&#39;], hash_algos())===false){
    echo &#39;Unknown hashing algorithm requested.<br>&#39;;
    } else {
    echo &#39;Hashing Algorithm: &#39;. $_POST[&#39;algo&#39;] . &#39;<br>&#39;;
    $hash = hash_file($_POST[&#39;algo&#39;], $_FILES[&#39;file&#39;][&#39;tmp_name&#39;]);
    echo &#39;Calculated hash: &#39; . $hash . &#39;<br>&#39;;
    if($_POST[&#39;exphash&#39;]!==&#39;none&#39; && !empty($_POST[&#39;exphash&#39;])){
      echo &#39;Expected hash:   &#39; . $_POST[&#39;exphash&#39;] . &#39;<br><br>&#39;;
      echo ($hash==$_POST[&#39;exphash&#39;])? &#39;<b id="ok">Hash matched expected value.</b>&#39; : &#39;<b id="nono">Hash did not match expected value.</b>&#39;;
      echo &#39;<br>&#39;;
    }
    }
   }
   ?>
   <br>
   <button onClick="document.location.reload(true)">Again</button>
    <?php
   } else {
  ?>
  <form action="" method="post" enctype="multipart/form-data">
   <input type="hidden" name="exphash" value="none">
   <label for="file">Filename:</label>
   <input type="file" name="file" id="file">
   <input type="submit" name="submit" value="Submit" /><br>
   <label>Expected hash(optional): <input type="text" name="exphash" size="100"></label>
   <br><br>Choose an algorithm (This is the list of all the available algorithms in your php installation)<br>
   <?php
   foreach(hash_algos() as $algo){
    if($algo==&#39;md5&#39;){
    echo "<label><input type=&#39;radio&#39; name=&#39;algo&#39; value=&#39;$algo&#39; checked=&#39;checked&#39;>$algo</label><br>";
    } else {
    echo "<label><input type=&#39;radio&#39; name=&#39;algo&#39; value=&#39;$algo&#39;>$algo</label><br>";
    }
   }
   ?>
  </form>
 <?php
   }
  ?>
</body>
</html>

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

php利用正则表达式提取内容中的链接

PHP实现数字分页功能

PHP表单数据验证类

以上是简述php对文件进行hash运算的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn