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分页函数
Jul 08 PHP
Ajax PHP分页演示
Jan 02 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
PHPUnit安装及使用示例
Oct 29 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
Oct 30 PHP
php的mssql数据库连接类实例
Nov 28 PHP
yii中widget的用法
Dec 03 PHP
PHP进程同步代码实例
Feb 12 PHP
php出租房数据管理及搜索页面
May 23 PHP
PHP基于面向对象实现的留言本功能实例
Apr 04 PHP
php通过各种函数判断0和空
Jul 04 PHP
PHP微信网页授权的配置文件操作分析
May 29 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为SHOPEX增加日志功能代码
2010/07/02 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
浅谈JS继承_借用构造函数 &amp; 组合式继承
2016/08/16 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
javascript自定义日期比较函数用法示例
2019/07/22 Javascript
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
python自动化测试之连接几组测试包实例
2014/09/28 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
python读取各种文件数据方法解析
2018/12/29 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Python-Flask:动态创建表的示例详解
2019/11/22 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
SQL面试题
2013/12/09 面试题
自荐信格式范文
2013/10/07 职场文书
我的求职计划书
2014/01/10 职场文书
员工安全生产责任书
2014/07/22 职场文书
地球一小时活动总结
2015/02/27 职场文书
幼儿园综治宣传月活动总结
2015/05/07 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
详解Python类和对象内容
2021/06/22 Python
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL