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五种设计模式小结
Mar 23 PHP
PHP排序之二维数组的按照字母排序实现代码
Aug 13 PHP
PHP之sprintf函数用法详解
Nov 12 PHP
推荐10个提供免费PHP脚本下载的网站
Dec 31 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
php传值赋值和传地址赋值用法实例分析
Jun 20 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
PHP简单获取及判断提交来源的方法
Apr 22 PHP
php 魔术常量详解及实例代码
Dec 04 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 PHP
php将字符串转换为数组实例讲解
May 05 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
Admin generator, filters and I18n
2011/10/06 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
php登录超时检测功能实例详解
2017/03/21 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
javascript发送短信验证码实现代码
2015/11/12 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
Node.js的特点详解
2017/02/03 Javascript
js css自定义分页效果
2017/02/24 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
2019/08/27 jQuery
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
Python使用sorted对字典的key或value排序
2018/11/15 Python
Python何时应该使用Lambda函数
2019/07/02 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
HTML5学习笔记之History API
2015/02/26 HTML / CSS
资料员岗位职责
2013/11/17 职场文书
怎么写有吸引力的自荐信
2013/11/17 职场文书
给交警的表扬信
2014/01/12 职场文书
党校学习自我鉴定
2014/02/24 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python