pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

    <small id='M0CVL'></small><noframes id='M0CVL'>

    <i id='M0CVL'><tr id='M0CVL'><dt id='M0CVL'><q id='M0CVL'><span id='M0CVL'><b id='M0CVL'><form id='M0CVL'><ins id='M0CVL'></ins><ul id='M0CVL'></ul><sub id='M0CVL'></sub></form><legend id='M0CVL'></legend><bdo id='M0CVL'><pre id='M0CVL'><center id='M0CVL'></center></pre></bdo></b><th id='M0CVL'></th></span></q></dt></tr></i><div class="cskoi4e" id='M0CVL'><tfoot id='M0CVL'></tfoot><dl id='M0CVL'><fieldset id='M0CVL'></fieldset></dl></div>

    1. <legend id='M0CVL'><style id='M0CVL'><dir id='M0CVL'><q id='M0CVL'></q></dir></style></legend>
        <bdo id='M0CVL'></bdo><ul id='M0CVL'></ul>

      <tfoot id='M0CVL'></tfoot>

    2. 使用純 PHP 驗(yàn)證兩個(gè)文件是否相同?

      Verifying that two files are identical using pure PHP?(使用純 PHP 驗(yàn)證兩個(gè)文件是否相同?)
      <tfoot id='4fI0Y'></tfoot>
          <tbody id='4fI0Y'></tbody>
          <bdo id='4fI0Y'></bdo><ul id='4fI0Y'></ul>
          <legend id='4fI0Y'><style id='4fI0Y'><dir id='4fI0Y'><q id='4fI0Y'></q></dir></style></legend>

          <i id='4fI0Y'><tr id='4fI0Y'><dt id='4fI0Y'><q id='4fI0Y'><span id='4fI0Y'><b id='4fI0Y'><form id='4fI0Y'><ins id='4fI0Y'></ins><ul id='4fI0Y'></ul><sub id='4fI0Y'></sub></form><legend id='4fI0Y'></legend><bdo id='4fI0Y'><pre id='4fI0Y'><center id='4fI0Y'></center></pre></bdo></b><th id='4fI0Y'></th></span></q></dt></tr></i><div class="g2kwac2" id='4fI0Y'><tfoot id='4fI0Y'></tfoot><dl id='4fI0Y'><fieldset id='4fI0Y'></fieldset></dl></div>
            1. <small id='4fI0Y'></small><noframes id='4fI0Y'>

              1. 本文介紹了使用純 PHP 驗(yàn)證兩個(gè)文件是否相同?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

                問(wèn)題描述

                限時(shí)送ChatGPT賬號(hào)..

                TL;DR:我有一個(gè) CMS 系統(tǒng),它使用文件內(nèi)容的 SHA-1 作為文件名來(lái)存儲(chǔ)附件(不透明文件).鑒于我已經(jīng)知道兩個(gè)文件的 SHA-1 哈希匹配,如何驗(yàn)證上傳的文件是否真的與存儲(chǔ)中的文件匹配?我想要高性能.

                TL;DR: I have an CMS system that stores attachments (opaque files) using SHA-1 of the file contents as the filename. How to verify if uploaded file really matches one in the storage, given that I already know that SHA-1 hash matches for both files? I'd like to have high performance.

                長(zhǎng)版:

                當(dāng)用戶向系統(tǒng)上傳新文件時(shí),我計(jì)算上傳文件內(nèi)容的 SHA-1 哈希值,然后檢查存儲(chǔ)后端中是否已存在具有相同哈希值的文件.PHP 在我的代碼運(yùn)行之前將上傳的文件放在 /tmp 中,然后我對(duì)上傳的文件運(yùn)行 sha1sum 以獲得文件內(nèi)容的 SHA-1 哈希值.然后我從計(jì)算出的 SHA-1 散列計(jì)算扇出并決定 NFS 掛載目錄層次結(jié)構(gòu)下的存儲(chǔ)目錄.(例如,如果文件內(nèi)容的 SHA-1 哈希值為 37aefc1e145992f2cc16fabadcfe23eede5fb094,則永久文件名是 /nfs/data/files/37/ae/fc1e145992f2cc16eedefadcfe>.除了保存實(shí)際的文件內(nèi)容,我INSERT 為用戶提交的元數(shù)據(jù)(例如Content-Type、原始文件名、日期戳等)在SQL 數(shù)據(jù)庫(kù)中添加一個(gè)新行.

                When an user uploads a new file to the system, I compute SHA-1 hash of the uploaded file contents and then check if a file with identical hash already exists in the storage backend. PHP puts the uploaded file in /tmp before my code gets to run and then I run sha1sum against the uploaded file to get SHA-1 hash of the file contents. I then compute fanout from the computed SHA-1 hash and decide storage directory under NFS mounted directory hierarchy. (For example, if the SHA-1 hash for a file contents is 37aefc1e145992f2cc16fabadcfe23eede5fb094 the permanent file name is /nfs/data/files/37/ae/fc1e145992f2cc16fabadcfe23eede5fb094.) In addition to saving the actual file contents, I INSERT a new line into a SQL database for the user submitted meta data (e.g. Content-Type, original filename, datestamp, etc).

                我目前想出的極端情況是,新上傳的文件具有 SHA-1 哈希值,該哈希值與存儲(chǔ)后端中的現(xiàn)有哈希值相匹配.我知道這種意外發(fā)生的變化是天文數(shù)字低,但我想確定.(對(duì)于故意案例,請(qǐng)參閱 https://shattered.io/)

                The corner case I'm currently figuring out is the case where a new uploaded file has SHA-1 hash that matches existing hash in the storage backend. I know that the changes for this happening by accident are astronomically low, but I'd like to be sure. (For on purpose case, see https://shattered.io/)

                給定兩個(gè)文件名$file_a$file_b,如何快速檢查兩個(gè)文件的內(nèi)容是否相同?假設(shè)文件太大加載到內(nèi)存中.對(duì)于 Python,我會(huì)使用 filecmp.cmp() 但 PHP 似乎沒(méi)有任何類似的東西.我知道這可以通過(guò) fread() 完成并在找到不匹配的字節(jié)時(shí)中止,但我寧愿不編寫該代碼.

                Given two filenames $file_a and $file_b, how to quickly check if both files have identical contents? Assume that files are too big to be loaded into memory. With Python, I'd use filecmp.cmp() but PHP does not seem to have anything similar. I know that this can be done with fread() and aborting if a non-matching byte is found, but I'd rather not write that code.

                推薦答案

                如果你已經(jīng)有一個(gè) SHA1 和,你可以簡(jiǎn)單地做:

                If you already have one SHA1 sum, you can simply do:

                if ($known_sha1 == sha1_file($new_file))
                

                否則

                if (filesize($file_a) == filesize($file_b)
                    && md5_file($file_a) == md5_file($file_b)
                )
                

                也檢查文件大小,以在一定程度上防止散列沖突(這已經(jīng)非常不可能了).也使用 MD5,因?yàn)樗?SHA 算法快得多(但不那么獨(dú)特).

                Checking file size too, to somewhat prevent a hash collision (which is already very unlikely). Also using MD5 because it's significantly faster than the SHA algorithms (but a little less unique).

                更新:

                這是如何準(zhǔn)確地相互比較兩個(gè)文件.

                This is how to exactly compare two files against each other.

                function compareFiles($file_a, $file_b)
                {
                    if (filesize($file_a) != filesize($file_b))
                        return false;
                
                    $chunksize = 4096;
                    $fp_a = fopen($file_a, 'rb');
                    $fp_b = fopen($file_b, 'rb');
                        
                    while (!feof($fp_a) && !feof($fp_b))
                    {
                        $d_a = fread($fp_a, $chunksize)
                        $d_b = fread($fp_b, $chunksize);
                        if ($d_a === false || $d_b === false || $d_a !== $d_b)
                        {
                            fclose($fp_a);
                            fclose($fp_b);
                            return false;
                        }
                    }
                 
                    fclose($fp_a);
                    fclose($fp_b);
                          
                    return true;
                }
                

                這篇關(guān)于使用純 PHP 驗(yàn)證兩個(gè)文件是否相同?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

                【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

                相關(guān)文檔推薦

                enable SOAP on PHP(在 PHP 上啟用 SOAP)
                Get received XML from PHP SOAP Server(從 PHP SOAP 服務(wù)器獲取接收到的 XML)
                not a valid AllXsd value(不是有效的 AllXsd 值)
                PHP SoapClient: SoapFault exception Could not connect to host(PHP SoapClient:SoapFault 異常無(wú)法連接到主機(jī))
                Implementation of P_SHA1 algorithm in PHP(PHP中P_SHA1算法的實(shí)現(xiàn))
                Sending a byte array from PHP to WCF(將字節(jié)數(shù)組從 PHP 發(fā)送到 WCF)
                  <tbody id='R99F8'></tbody>

                    <bdo id='R99F8'></bdo><ul id='R99F8'></ul>
                    <tfoot id='R99F8'></tfoot>
                        <i id='R99F8'><tr id='R99F8'><dt id='R99F8'><q id='R99F8'><span id='R99F8'><b id='R99F8'><form id='R99F8'><ins id='R99F8'></ins><ul id='R99F8'></ul><sub id='R99F8'></sub></form><legend id='R99F8'></legend><bdo id='R99F8'><pre id='R99F8'><center id='R99F8'></center></pre></bdo></b><th id='R99F8'></th></span></q></dt></tr></i><div class="2u00oss" id='R99F8'><tfoot id='R99F8'></tfoot><dl id='R99F8'><fieldset id='R99F8'></fieldset></dl></div>

                        <small id='R99F8'></small><noframes id='R99F8'>

                          <legend id='R99F8'><style id='R99F8'><dir id='R99F8'><q id='R99F8'></q></dir></style></legend>

                        1. 主站蜘蛛池模板: 软启动器-上海能曼电气有限公司 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 风化石头制砂机_方解石制砂机_瓷砖石子制砂机_华盛铭厂家 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 纯水电导率测定仪-万用气体检测仪-低钠测定仪-米沃奇科技(北京)有限公司www.milwaukeeinst.cn 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 烟气换热器_GGH烟气换热器_空气预热器_高温气气换热器-青岛康景辉 | 卓能JOINTLEAN端子连接器厂家-专业提供PCB接线端子|轨道式端子|重载连接器|欧式连接器等电气连接产品和服务 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 求是网 - 思想建党 理论强党| 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | 磷酸肌酸二钠盐,肌酐磷酰氯-沾化欣瑞康生物科技 | TPE_TPE热塑性弹性体_TPE原料价格_TPE材料厂家-惠州市中塑王塑胶制品公司- 中塑王塑胶制品有限公司 | 汝成内控-行政事业单位内部控制管理服务商 | 电动不锈钢套筒阀-球面偏置气动钟阀-三通换向阀止回阀-永嘉鸿宇阀门有限公司 | 无水硫酸铝,硫酸铝厂家-淄博双赢新材料科技有限公司 | 小型数控车床-数控车床厂家-双头数控车床 | 搪瓷反应釜厂家,淄博搪瓷反应釜-淄博卓耀 | 湖北省煤炭供应链综合服务平台 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 健身器材-健身器材厂家专卖-上海七诚健身器材有限公司 | 博客-悦享汽车品质生活 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 便民信息网_家电维修,家电清洗,开锁换锁,本地家政公司 | 深圳激光打标机_激光打标机_激光焊接机_激光切割机_同体激光打标机-深圳市创想激光科技有限公司 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 正压送风机-多叶送风口-板式排烟口-德州志诺通风设备 | 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | EPDM密封胶条-EPDM密封垫片-EPDM生产厂家 | 大型果蔬切片机-水果冬瓜削皮机-洗菜机切菜机-肇庆市凤翔餐饮设备有限公司 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 双相钢_双相不锈钢_双相钢圆钢棒_双相不锈钢报价「海新双相钢」 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 专业生产动态配料系统_饲料配料系统_化肥配料系统等配料系统-郑州鑫晟重工机械有限公司 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | 撕碎机,撕破机,双轴破碎机-大件垃圾破碎机厂家 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 齿轮减速机电机一体机_齿轮减速箱加电机一体化-德国BOSERL蜗轮蜗杆减速机电机生产厂家 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 金属切削液-脱水防锈油-电火花机油-抗磨液压油-深圳市雨辰宏业科技发展有限公司 |