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 网页过期时间的控制代码
Jun 29 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 PHP
分享php邮件管理器源码
Jan 06 PHP
php调用自己java程序的方法详解
May 13 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
thinkPHP通用控制器实现方法示例
Nov 23 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 PHP
Laravel框架中集成MongoDB和使用详解
Oct 17 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 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的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
2011/10/30 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
jQuery autocomplete插件修改
2009/04/17 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
python中urllib模块用法实例详解
2014/11/19 Python
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python3使用pandas获取股票数据的方法
2018/12/22 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
英语国培研修感言
2014/02/13 职场文书
有创意的广告词
2014/03/18 职场文书
违纪检讨书范文
2015/01/27 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python