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聊天室技术
Oct 09 PHP
PHP6 先修班 JSON实例代码
Aug 23 PHP
PHP源码之 ext/mysql扩展部分
Jul 17 PHP
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
深入array multisort排序原理的详解
Jun 18 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
Nov 11 PHP
PhpDocumentor 2安装以及生成API文档的方法
May 21 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
PHP遍历目录文件的常用方法小结
Feb 03 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
thinkphp诸多限制条件下如何getshell详解
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登陆页的密码处理方式分享
2013/10/14 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
PHP 读取和编写 XML
2014/11/19 PHP
php中序列化与反序列化详解
2017/02/13 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
基于jquery封装的一个js分页
2011/11/15 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
介绍Python中的fabs()方法的使用
2015/05/14 Python
python实现linux下使用xcopy的方法
2015/06/28 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
python基础梳理(一)(推荐)
2019/04/06 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
如何在python中判断变量的类型
2020/07/29 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
酒店个人培训自我鉴定
2013/12/11 职场文书
图书馆标语
2014/06/19 职场文书
个人自我剖析材料
2014/09/30 职场文书
学校青年志愿者活动总结
2015/05/06 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang