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 相关文章推荐
Mysql的常用命令
Oct 09 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
php中session_unset与session_destroy的区别分析
Jun 16 PHP
php常用文件操作函数汇总
Nov 22 PHP
大家在抢红包,程序员在研究红包算法
Aug 31 PHP
PHP 实现的将图片转换为TXT
Oct 21 PHP
基于PHP实现简单的随机抽奖小程序
Jan 05 PHP
PHP安全下载文件的方法
Apr 07 PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
扩展String功能方法
2006/09/22 Javascript
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
js随机生成一个验证码
2017/06/01 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
JS无限级导航菜单实现方法
2019/01/05 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
python爬虫实现获取下一页代码
2020/03/13 Python
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
护理专业毕业生自我鉴定
2013/10/08 职场文书
个性发展自我评价
2014/02/11 职场文书
家具促销活动方案
2014/02/16 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
小学运动会开幕词
2015/01/28 职场文书
预备党员自我评价范文
2015/03/04 职场文书
2015年外联部工作总结
2015/04/03 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
Golang生成Excel文档的方法步骤
2021/06/09 Golang
Python装饰器的练习题
2021/11/23 Python
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang