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 相关文章推荐
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 PHP
php中使用DOM类读取XML文件的实现代码
Dec 14 PHP
PHP实现ftp上传文件示例
Aug 21 PHP
php中使用session防止用户非法登录后台的方法
Jan 27 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
PHP Smarty模版简单使用方法
Mar 30 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 30 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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安装为Apache DSO
2006/10/09 PHP
php连接数据库代码应用分析
2011/05/29 PHP
PHP预定义接口――Iterator用法示例
2020/06/05 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
jQuery实现本地存储
2020/12/22 jQuery
利用node.js开发cli的完整步骤
2020/12/29 Javascript
Python中逗号的三种作用实例分析
2015/06/08 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
Python内置函数locals和globals对比
2020/04/28 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
numba提升python运行速度的实例方法
2021/01/25 Python
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
研究生求职推荐信范文
2013/11/30 职场文书
道德演讲稿
2014/05/21 职场文书
119消防日活动总结
2014/08/29 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
地震慰问信
2015/02/14 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
2019入党申请书格式
2019/06/25 职场文书
浅析Python实现DFA算法
2021/06/26 Python
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers