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 相关文章推荐
第四节--构造函数和析构函数
Nov 16 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
PHP内核探索:变量概述
Jan 30 PHP
php中的curl_multi系列函数使用例子
Jul 29 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
Aug 02 PHP
PHP实现正则匹配所有括号中的内容
Jun 22 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 PHP
YII框架关联查询操作示例
Apr 29 PHP
PHP如何防止用户重复提交表单
Dec 09 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 伪造本地文件包含漏洞的代码
2011/11/03 PHP
php对mongodb的扩展(初出茅庐)
2012/11/11 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
php字符串操作常见问题小结
2016/10/11 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
学前班教师的自我鉴定
2013/12/05 职场文书
经济管理专业自荐信
2013/12/30 职场文书
活动总结格式范文
2014/04/26 职场文书
离婚协议书范文2014
2014/10/16 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL
vue封装数字翻牌器
2022/04/20 Vue.js