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日历[测试通过]
Mar 27 PHP
一步一步学习PHP(1) php开发环境配置
Feb 15 PHP
php 网上商城促销设计实例代码
Feb 17 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
ThinkPHP框架安全实现分析
Mar 14 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
php中关于换行的实例写法
Sep 26 PHP
php实现对文件压缩简单的方法
Sep 29 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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中进行身份认证
2006/10/09 PHP
收集的PHP中与数组相关的函数
2007/03/22 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
jquery判断对象是否为空并遍历对象的简单实例
2016/07/26 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python 多线程实例详解
2017/03/25 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
机械电子工程专业推荐信范文
2013/11/20 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
村干部培训方案
2014/05/02 职场文书
暑假学习心得体会
2014/09/02 职场文书
心灵点滴观后感
2015/06/02 职场文书