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正确配置mysql(apache环境)
Aug 28 PHP
PHP删除数组中的特定元素的代码
Jun 28 PHP
PHP编程函数安全篇
Jan 08 PHP
使用phpQuery采集网页的方法
Nov 13 PHP
WordPress分页伪静态加html后缀
Jun 08 PHP
PHP读取Excel类文件
May 15 PHP
Django 标签筛选的实现代码(一对多、多对多)
Sep 05 PHP
yii2 上传图片的示例代码
Nov 02 PHP
PHP获取星期几的常用方法小结
Dec 18 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 10 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
php判断IP地址是否在多个IP段内
Aug 18 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
星际玩家的三大定律
2020/03/04 星际争霸
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
javascript截取字符串小结
2015/04/28 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
Python使用剪切板的方法
2017/06/06 Python
python机器学习之随机森林(七)
2018/03/26 Python
对Python中range()函数和list的比较
2018/04/19 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
公司庆典活动邀请函
2014/01/09 职场文书
体育活动总结范文
2014/05/04 职场文书
大专生找工作自荐书
2014/06/10 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
个人事迹材料范文
2014/12/29 职场文书
会议通知
2015/04/15 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
运动会广播稿300字
2015/08/19 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
如何在Python中创建二叉树
2021/03/30 Python
golang定时器
2022/04/14 Golang