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 相关文章推荐
PHP5中使用PDO连接数据库的方法
Aug 01 PHP
php替换超长文本中的特殊字符的函数代码
May 22 PHP
解决Codeigniter不能上传rar和zip压缩包问题
Mar 07 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
smarty简单分页的实现方法
Oct 27 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
Mar 02 PHP
php中memcache 基本操作实例
May 17 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
php的常量和变量实例详解
Jun 27 PHP
php实现数组重复数字统计实例
Sep 30 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
Dec 07 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
在WINDOWS中设置计划任务执行PHP文件的方法
2011/12/19 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
JavaScript 动态将数字金额转化为中文大写金额
2009/05/14 Javascript
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
layer插件select选中默认值的方法
2018/08/14 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
[02:15]2015国际邀请赛选手档案IG.Ferrari 430
2015/07/30 DOTA
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
Python2与Python3的区别实例总结
2019/04/17 Python
用Python配平化学方程式的方法
2019/07/20 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
一些Unix笔试题和面试题
2012/09/25 面试题
店长岗位的工作内容
2013/11/12 职场文书
亮化工程实施方案
2014/03/17 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
Python极值整数的边界探讨分析
2021/09/15 Python