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 相关文章推荐
珊瑚虫IP库浅析
Feb 15 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
Mar 30 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
PHP获取类中常量,属性,及方法列表的方法
Apr 09 PHP
PHPUnit PHP测试框架安装方法
Mar 23 PHP
PHP中操作ini配置文件的方法
Apr 25 PHP
微信营销平台系统?刮刮乐的开发
Jun 10 PHP
php遍历CSV类实例
Apr 14 PHP
Yii2数据库操作常用方法小结
May 04 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
浅析PHP7的多进程及实例源码
Apr 14 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
Angular ElementRef简介及其使用
2018/10/01 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
JS+CSS实现3D切割轮播图
2020/03/21 Javascript
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
python统计日志ip访问数的方法
2015/07/06 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
python制作websocket服务器实例分享
2016/11/20 Python
Python字符串处理实例详解
2017/05/18 Python
机器学习10大经典算法详解
2017/12/07 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
python中p-value的实现方式
2019/12/16 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
营销与策划专业毕业生求职信
2013/11/01 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
小学运动会开幕词
2015/01/28 职场文书
红色经典电影观后感
2015/06/18 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL