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中养成7个面向对象的好习惯
Jan 28 PHP
php与paypal整合方法
Nov 28 PHP
PHP的变量总结 新手推荐
Apr 18 PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 PHP
PHP生成不同颜色、不同大小的tag标签函数
Sep 23 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
php实现加减法验证码代码
Feb 14 PHP
php定义数组和使用示例(php数组的定义方法)
Mar 29 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
php分割合并两个字符串的函数实例
Jun 19 PHP
在PHP程序中使用Rust扩展的方法
Jul 03 PHP
PHP实现小偷程序实例
Oct 31 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中使用Oracle数据库(4)
2006/10/09 PHP
对javascript和select部件的结合运用
2006/10/09 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
2016/02/04 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
2017/02/15 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
在Django的通用视图中处理Context的方法
2015/07/21 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
经典优秀个人求职自荐信格式
2013/09/25 职场文书
2013英文求职信模板范文
2013/11/15 职场文书
股指期货心得体会
2014/09/13 职场文书
学校总务处领导班子民主生活会对照检查材料思想汇报
2014/09/27 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python
Python数据处理的三个实用技巧分享
2022/04/01 Python