php对文件进行hash运算的方法

5年以前  |  阅读数:1161 次  |  编程语言:PHP 

本文实例讲述了php对文件进行hash运算的方法。分享给大家供大家参考。具体如下:

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


    <html>
    <head>
      <title>Hash (Check) Files</title>
      <style type='text/css'>
       #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='nono'>Error: The uploaded file exceeds the upload_max_filesize directive in php.ini</b><br>";
         break;
         case 2:
         echo "<b id='nono'>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='nono'>Error: The uploaded file was only partially uploaded.</b><br>";
         break;
         case 4:
         echo "<b id='nono'>Error: No file was uploaded.</b><br>";
         break;
         case 6:
         echo "<b id='nono'>Error: Missing a temporary folder.</b><br>";
         break;
         case 7:
         echo "<b id='nono'>Error: Failed to write file to disk.</b><br>";
         break;
         case 8:
         echo "<b id='nono'>Error: A PHP extension stopped the file upload.</b><br>";
         break;
         default:
         echo "<b id='nono'>Unknown error occured.</b><br>";
        }
       } else {
        echo 'Upload: ' . $_FILES['file']['name'] . '<br>';
        echo 'Type: ' . $_FILES['file']['type'] . '<br>';
        echo 'Size: ' . (round($_FILES['file']['size'] / 1024, 2)) . ' Kb<br><br>';
        if(array_search($_POST['algo'], hash_algos())===false){
        echo 'Unknown hashing algorithm requested.<br>';
        } else {
        echo 'Hashing Algorithm: '. $_POST['algo'] . '<br>';
        $hash = hash_file($_POST['algo'], $_FILES['file']['tmp_name']);
        echo 'Calculated hash: ' . $hash . '<br>';
        if($_POST['exphash']!=='none' && !empty($_POST['exphash'])){
          echo 'Expected hash:   ' . $_POST['exphash'] . '<br><br>';
          echo ($hash==$_POST['exphash'])? '<b id="ok">Hash matched expected value.</b>' : '<b id="nono">Hash did not match expected value.</b>';
          echo '<br>';
        }
        }
       }
       ?>
       <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=='md5'){
        echo "<label><input type='radio' name='algo' value='$algo' checked='checked'>$algo</label><br>";
        } else {
        echo "<label><input type='radio' name='algo' value='$algo'>$algo</label><br>";
        }
       }
       ?>
      </form>
     <?php
       }
      ?>
    </body>
    </html>

希望本文所述对大家的php程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例