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


Posted in PHP onApril 03, 2015

本文实例讲述了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 相关文章推荐
php&amp;java(三)
Oct 09 PHP
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
Aug 02 PHP
探讨GDFONTPATH能否被winxp下的php支持
Jun 21 PHP
thinkphp的c方法使用示例
Feb 24 PHP
php设计模式之单例模式实例分析
Feb 25 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
Mar 27 PHP
php实现仿写CodeIgniter的购物车类
Jul 29 PHP
微信公众平台DEMO(PHP)
May 04 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
Yii2框架自定义类统一处理url操作示例
May 25 PHP
laravel框架的安装与路由实例分析
Oct 11 PHP
php计算给定时间之前的函数用法实例
Apr 03 #PHP
php实现的mongodb操作类实例
Apr 03 #PHP
PHP中判断文件存在使用is_file还是file_exists?
Apr 03 #PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 #PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 #PHP
PHP中返回引用类型的方法
Apr 03 #PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 #PHP
You might like
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
JS中style属性
2006/10/11 Javascript
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
微信小程序一周时间表功能实现
2019/10/17 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
2020/06/04 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
Python交换变量
2008/09/06 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
中国领先的专业演出票务网:永乐票务
2016/08/29 全球购物
旅游管理毕业生自荐信
2013/11/05 职场文书
个人素质的自我评价分享
2013/12/16 职场文书
班级课外活动总结
2014/07/09 职场文书
导航工程专业自荐信
2014/09/02 职场文书
运动会广播稿100字
2014/09/14 职场文书
中学生思想品德评语
2014/12/31 职场文书
百年校庆感言
2015/08/01 职场文书
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python
Python实现简单得递归下降Parser
2022/05/02 Python