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
Dec 14 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
Jun 05 PHP
window+nginx+php环境配置 附配置搭配说明
Dec 29 PHP
PHP命名空间(Namespace)的使用详解
May 04 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
php过滤敏感词的示例
Mar 31 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
浅谈php中curl、fsockopen的应用
Dec 10 PHP
php cli模式下获取参数的方法
May 05 PHP
PHP实现唤起微信支付功能
Feb 18 PHP
phpstudy隐藏index.php的方法
Sep 21 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
Php图像处理类代码分享
2012/01/19 PHP
php基础教程
2015/08/26 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
php源码的使用方法讲解
2019/09/26 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
对python3 urllib包与http包的使用详解
2018/05/10 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
python常用函数与用法示例
2019/07/02 Python
python自定义函数def的应用详解
2020/06/03 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
实习单位推荐信范文
2013/11/27 职场文书
优秀企业获奖感言
2014/02/01 职场文书
小学庆六一活动总结
2014/08/28 职场文书
作风建设年度心得体会
2014/10/29 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
面试复试通知单
2015/04/24 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
Java使用JMeter进行高并发测试
2021/11/23 Java/Android