当前位置: 首页 > wzjs >正文

学网站开发怎么样查询域名官网的是那个网站吗

学网站开发怎么样,查询域名官网的是那个网站吗,wordpress的论坛,大型网站方案如题。先介绍下概念。 Q1. 文件的哈希值是什么? 文件的哈希值是通过特定的哈希算法对文件内容进行计算后得到的固定长度的字符串(通常由数字和字母组成),它具有以下特点和相关信息: 哈希算法:常见的用于计…

如题。先介绍下概念。

Q1. 文件的哈希值是什么?

文件的哈希值是通过特定的哈希算法对文件内容进行计算后得到的固定长度的字符串(通常由数字和字母组成),它具有以下特点和相关信息:

  1. 哈希算法:常见的用于计算文件哈希值的算法包括 MD5、SHA-1、SHA-256、SHA-512 等。不同算法的计算方式和生成的哈希值长度不同。例如,MD5 算法生成的哈希值是 128 位(通常以 32 个十六进制字符表示),SHA-256 算法生成的哈希值是 256 位(以 64 个十六进制字符表示) 。
  2. 唯一性:理论上,不同内容的文件经过哈希算法计算后,应该得到不同的哈希值。这意味着如果两个文件的哈希值相同,那么它们的内容很可能是完全一样的(虽然存在极小概率的哈希碰撞,即不同内容产生相同哈希值,但这种情况非常罕见)。例如,在文件传输过程中,接收方可以计算接收到的文件的哈希值,并与发送方提供的原始文件哈希值进行比较,以验证文件在传输过程中是否完整无损,没有被篡改。
  3. 固定长度:无论文件的大小和内容如何,使用特定哈希算法计算得到的哈希值长度是固定的。例如,无论一个文本文件是几 KB 还是几 MB,使用 SHA-256 算法计算出的哈希值始终是 256 位。
  4. 不可逆性:哈希计算是一种单向操作,即可以通过文件内容计算出哈希值,但无法从哈希值反向推导出原始的文件内容。这使得哈希值在数据存储和安全验证等方面具有重要作用,比如在存储用户密码时,通常存储的是密码的哈希值,即使数据库被攻击,攻击者也难以从哈希值还原出原始密码。

哈希值在文件验证、数据完整性检查、文件去重、密码存储等众多领域都有广泛应用,是确保数据一致性和安全性的重要手段之一。

Q2. 比如一个文件 有1G大小,那么它的哈希值会多大?

文件哈希值的大小与文件本身的大小无关,而是由所使用的哈希算法决定。

常见的哈希算法及其生成的哈希值大小如下:

  1. MD5 算法:生成 128 位(16 字节)的哈希值,通常以 32 个十六进制字符表示。例如:d41d8cd98f00b204e9800998ecf8427e ,无论原文件是 1 字节还是 1GB 甚至更大,使用 MD5 算法计算出的哈希值固定是 128 位。
  2. SHA-1 算法:产生 160 位(20 字节)的哈希值,一般以 40 个十六进制字符呈现。比如:da39a3ee5e6b4b0d3255bfef95601890afd80709 ,不管文件大小怎样变化,SHA-1 算法得到的哈希值长度不变。
  3. SHA-256 算法:输出 256 位(32 字节)的哈希值,以 64 个十六进制字符展示。例如:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ,即使是 1GB 的大文件,其 SHA-256 哈希值依然是 256 位。
  4. SHA-512 算法:生成 512 位(64 字节)的哈希值,用 128 个十六进制字符表示。如:cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e ,同样不受文件大小影响。

所以,一个 1GB 大小的文件,其哈希值的大小取决于选择的哈希算法,而不是文件自身的体积大小。

需求:客户有200+份文件来源于不同的三方平台,但是客户不确定是否有重复文件。可能来源不同但是文件相同。客户希望筛出这些重复文件。供用户搜索用,这样用户就只会搜出唯一的文件结果,而不是来源于不同渠道的相同文件。

实现思路:

先获取所有文件的大小,并按照大小group by,这样相同大小的文件就会在一组。文件大小不同一定不属于相同文件,文件大小相同有可能属于相同文件,也有可能是不同的文件刚好大小相等。按照这方式,遍历所有相同大小的组。比对哈希值。文件大小不同的就不用比较了。肯定不是相同文件。

/*
代码说明
FindDuplicateFilesGrouped 方法:
首先遍历传入的文件路径数组,将每个文件的信息(Id、FileName、FileSize)封装到 FileInfoEntity 对象中,并添加到 fileInfos 列表。
接着按文件大小对 fileInfos 进行分组,得到 sizeGroups。
针对每个大小组,计算组内每个文件的哈希值,把具有相同哈希值的文件存到 hashGroups 字典里。
最后,将 hashGroups 中包含多个文件的组添加到 duplicateFileGroups 列表,该列表即为最终按组返回的重复文件结果。
通过这种方式,就能方便地找出所有重复文件,并将它们按组分类返回。
*/

FileComparisonTool.cs

//FileComparisonTool.csusing System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Linq;
using System.Security.Cryptography;namespace ConsoleApp1_CompareFiles
{// 文件实体类public class FileInfoEntity{public Guid Id { get; set; }public MemoryStream Stream { get; set; }public string FileName { get; set; }public long FileSize { get; set; }}// 文件比较工具类public class FileComparisonTool{public static string[] GetAllFilesInFolder(string folderPath){try{// 获取当前文件夹下的所有文件string[] files = Directory.GetFiles(folderPath);// 获取当前文件夹下的所有子文件夹string[] subFolders = Directory.GetDirectories(folderPath);foreach (string subFolder in subFolders){// 递归调用获取子文件夹下的所有文件string[] subFiles = GetAllFilesInFolder(subFolder);files = files.Concat(subFiles).ToArray();}return files;}catch (Exception ex){Console.WriteLine($"发生错误: {ex.Message}");return new string[0];}}// 计算文件哈希值private static string CalculateHash(Stream stream){using (SHA256 sha256 = SHA256.Create()){byte[] hashBytes = sha256.ComputeHash(stream);return BitConverter.ToString(hashBytes).Replace("-", "").ToLowerInvariant();}}// 入参是两个文件流,比较两个文件public static bool CompareFiles(Stream stream1, Stream stream2){stream1.Position = 0;stream2.Position = 0;string hash1 = CalculateHash(stream1);string hash2 = CalculateHash(stream2);return hash1 == hash2;}// 入参是两个文件路径,比较两个文件public static bool CompareFiles(string filePath1, string filePath2){using (FileStream stream1 = File.OpenRead(filePath1))using (FileStream stream2 = File.OpenRead(filePath2)){return CompareFiles(stream1, stream2);}}// 入参是文件路径的数组,找出重复文件public static List<FileInfoEntity> FindDuplicateFiles(string[] filePaths){var fileInfos = new List<FileInfoEntity>();foreach (var filePath in filePaths){var fileInfo = new FileInfo(filePath);fileInfos.Add(new FileInfoEntity{Id = Guid.NewGuid(),FileName = filePath,FileSize = fileInfo.Length});}var groups = fileInfos.GroupBy(f => f.FileSize);var duplicateFiles = new List<FileInfoEntity>();foreach (var group in groups){if (group.Count() > 1){var hashes = new Dictionary<string, FileInfoEntity>();foreach (var file in group){using (FileStream stream = File.OpenRead(file.FileName)){string hash = CalculateHash(stream);if (hashes.ContainsKey(hash)){if (!duplicateFiles.Contains(hashes[hash])){duplicateFiles.Add(hashes[hash]);}duplicateFiles.Add(file);}else{hashes[hash] = file;}}}}}return duplicateFiles;}/*代码说明FindDuplicateFilesGrouped 方法:首先遍历传入的文件路径数组,将每个文件的信息(Id、FileName、FileSize)封装到 FileInfoEntity 对象中,并添加到 fileInfos 列表。接着按文件大小对 fileInfos 进行分组,得到 sizeGroups。针对每个大小组,计算组内每个文件的哈希值,把具有相同哈希值的文件存到 hashGroups 字典里。最后,将 hashGroups 中包含多个文件的组添加到 duplicateFileGroups 列表,该列表即为最终按组返回的重复文件结果。通过这种方式,就能方便地找出所有重复文件,并将它们按组分类返回。*/// 入参是文件路径数组,按组返回重复文件public static List<List<FileInfoEntity>> FindDuplicateFilesGrouped(string[] filePaths){var fileInfos = new List<FileInfoEntity>();foreach (var filePath in filePaths){var fileInfo = new FileInfo(filePath);fileInfos.Add(new FileInfoEntity{Id = Guid.NewGuid(),FileName = filePath,FileSize = fileInfo.Length});}var sizeGroups = fileInfos.GroupBy(f => f.FileSize);var duplicateFileGroups = new List<List<FileInfoEntity>>();foreach (var sizeGroup in sizeGroups){if (sizeGroup.Count() > 1){var hashGroups = new Dictionary<string, List<FileInfoEntity>>();foreach (var file in sizeGroup){using (FileStream stream = File.OpenRead(file.FileName)){string hash = CalculateHash(stream);if (!hashGroups.ContainsKey(hash)){hashGroups[hash] = new List<FileInfoEntity>();}hashGroups[hash].Add(file);}}foreach (var hashGroup in hashGroups.Values){if (hashGroup.Count > 1){duplicateFileGroups.Add(hashGroup);}}}}return duplicateFileGroups;}}
}

//

// Program.cs// See https://aka.ms/new-console-template for more informationusing ConsoleApp1_CompareFiles;Console.WriteLine("Hello, World!");string[] filePaths = { "C:\\Users\\Aa\\Desktop\\新建文件夹\\1.txt","C:\\Users\\Aa\\Desktop\\新建文件夹\\2.txt","C:\\Users\\Aa\\Desktop\\新建文件夹\\3.txt","C:\\Users\\Aa\\Desktop\\新建文件夹\\4.xlsx","C:\\Users\\Aa\\Desktop\\新建文件夹\\5.xlsx","C:\\Users\\Aa\\Desktop\\新建文件夹\\6.docx","C:\\Users\\Aa\\Desktop\\新建文件夹\\7.docx","C:\\Users\\Aa\\Desktop\\新建文件夹\\8.jpeg","C:\\Users\\Aa\\Desktop\\新建文件夹\\9.jpeg","C:\\Users\\Aa\\Desktop\\新建文件夹\\捕获 - 副本.PNG","C:\\Users\\Aa\\Desktop\\新建文件夹\\捕获.PNG","C:\\Users\\Aa\\Desktop\\新建文件夹\\微信图片_20250221165428.png",};string folderPath = @"C:\Users\Aa\Desktop\新建文件夹";
string[] allFiles = FileComparisonTool.GetAllFilesInFolder(folderPath);var duplicateFileGroups = FileComparisonTool.FindDuplicateFilesGrouped(allFiles);
Console.WriteLine($"找到的重复文件组数量: {duplicateFileGroups.Count}");
foreach (var group in duplicateFileGroups)
{Console.WriteLine($"该组重复文件数量: {group.Count}");foreach (var file in group){Console.WriteLine($"  文件 ID: {file.Id}, 文件名: {file.FileName}, 文件大小: {file.FileSize}");}
}

实现效果:

测试文件.txt文本的举例子。可以看到黄框和红框内的都属于相同文件。红框和黄框内的虽然字节数是一样的,相同大小会group by到一组。但是hash值肯定是不同的。

仅供学习参考。如有侵权联系我删除


文章转载自:

http://mAB20fUc.fbdkb.cn
http://UoqwW0Tu.fbdkb.cn
http://Ow5SYIWG.fbdkb.cn
http://AnEmXkQv.fbdkb.cn
http://vxK18pcL.fbdkb.cn
http://vvEpjqWn.fbdkb.cn
http://1dRoneSV.fbdkb.cn
http://7J6rMdsF.fbdkb.cn
http://73ek8ozQ.fbdkb.cn
http://cKLWr5HX.fbdkb.cn
http://NqzebGbT.fbdkb.cn
http://QvV2IS7B.fbdkb.cn
http://bndpuwJV.fbdkb.cn
http://bV0WIYs4.fbdkb.cn
http://hQCVhFHe.fbdkb.cn
http://sGVF2wzC.fbdkb.cn
http://9cdbmCLW.fbdkb.cn
http://emmKTwsv.fbdkb.cn
http://4FRwd2ep.fbdkb.cn
http://3JbaM4uM.fbdkb.cn
http://56NJK3Tl.fbdkb.cn
http://M8F9uAkA.fbdkb.cn
http://v1jFdoSA.fbdkb.cn
http://8RbnHOQ5.fbdkb.cn
http://2ijDmnPh.fbdkb.cn
http://vdwkabkh.fbdkb.cn
http://FCYF0P5U.fbdkb.cn
http://02UXvJ0a.fbdkb.cn
http://61yp5QEg.fbdkb.cn
http://ara81vh6.fbdkb.cn
http://www.dtcms.com/wzjs/610259.html

相关文章:

  • 网站建设有哪些关键细节破解wordpress主题教程
  • easyui做网站做微信问卷调查的网站
  • 专业模板网站设计公司功能网站模板
  • 网站建设所需服务器费用北京网站手机站建设公司
  • 山东省建设厅网站首页深圳网页设计机构
  • 业务员自己掏钱做网站可以吗关键词优化软件哪家好
  • 制作网站一般要多少钱优化神马网站关键词排名价格
  • 做淘宝客网站域名是别人的网站开发在线培训
  • 中国古建筑网站十堰seo优化方法
  • 智能建站模板用html制作登录注册界面
  • 专业做合同的网站做网站手机版和电脑版怎么区分
  • 简单个人网站源码wordpress 页面中读取文章列表
  • iis wordpress ftp太原seo排名
  • 麦吉太原网站建设丽怎么代理长春火车站位置
  • 网站怎么做百度商桥如何做推广引流赚钱
  • 网站展示型和营销型有什么区别店铺网络营销策划方案
  • 网站出现搜索wordpress中文购物
  • wordpress 模板网站有利于做seo吗</a> </li> <li> <a href="/wzjs/610236.html">网站的建设属于无形资产吗江苏省两学一做网站</a> </li> <li> <a href="/wzjs/610235.html">为什么网站收录在百度突然没有了装饰设计收费标准2020</a> </li> <li> <a href="/wzjs/610233.html">河北省和城乡住房建设厅网站首页新乡网络推广外包</a> </li> <li> <a href="/wzjs/610232.html">东莞seo建站广告wordpress系统流程图</a> </li> <li> <a href="/wzjs/610231.html">注册网站域名平台网站制作的网站</a> </li> <li> <a href="/wzjs/610230.html">dnf怎么做提卡网站中国建设银行网站客户注册码</a> </li> <li> <a href="/wzjs/610228.html">上海网络公司网站建设国内简洁大气网站推荐</a> </li> <li> <a href="/wzjs/610227.html">网站组网图郑州网络公司做医疗网站</a> </li> <li> <a href="/wzjs/610226.html">无锡网站建设 微信制作网站注册页面模板</a> </li> <li> <a href="/wzjs/610225.html">广州模板建站多少钱想学网站建设 如何开始</a> </li> <li> <a href="/wzjs/610224.html">丰台网站开发联系电话怎么给网站做优化</a> </li> <li> <a href="/wzjs/610223.html">做网站是不是要学编程app软件开发官网</a> </li> </div> </article> </main> </div> </div> <aside id="secondary" class="widget-area sidebar"> <div class="widget widget_posts_thumbnail" style="margin-top:6px;"> <h2 class="widget-title">最新文章</h2> <ul> <li class="clear"> <a href="/wzjs/639506.html" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/网站流量统计表北京工装装饰公司排行榜" alt=" 网站流量统计表北京工装装饰公司排行榜" /> </div> </a> <div class="entry-wrap"> <a href="/wzjs/639506.html" rel="bookmark"> 网站流量统计表北京工装装饰公司排行榜</a> <div class="entry-meta">2025/9/7 5:48:18</div></div> </li> <li class="clear"> <a href="/wzjs/639505.html" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/网站宝二级域名怎么设置深圳教育网站设计公司" alt=" 网站宝二级域名怎么设置深圳教育网站设计公司" /> </div> </a> <div class="entry-wrap"> <a href="/wzjs/639505.html" rel="bookmark"> 网站宝二级域名怎么设置深圳教育网站设计公司</a> <div class="entry-meta">2025/9/7 5:48:11</div></div> </li> <li class="clear"> <a href="/wzjs/639504.html" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/牛商网专注营销型网站建设360营销平台" alt=" 牛商网专注营销型网站建设360营销平台" /> </div> </a> <div class="entry-wrap"> <a href="/wzjs/639504.html" rel="bookmark"> 牛商网专注营销型网站建设360营销平台</a> <div class="entry-meta">2025/9/7 5:48:05</div></div> </li> <li class="clear"> <a href="/wzjs/639502.html" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/网站建设价格明细表公司网站做一下多少钱" alt=" 网站建设价格明细表公司网站做一下多少钱" /> </div> </a> <div class="entry-wrap"> <a href="/wzjs/639502.html" rel="bookmark"> 网站建设价格明细表公司网站做一下多少钱</a> <div class="entry-meta">2025/9/7 5:47:52</div></div> </li> <li class="clear"> <a href="/wzjs/639501.html" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/山西省建设厅勘察设计协会网站360搜索引擎" alt=" 山西省建设厅勘察设计协会网站360搜索引擎" /> </div> </a> <div class="entry-wrap"> <a href="/wzjs/639501.html" rel="bookmark"> 山西省建设厅勘察设计协会网站360搜索引擎</a> <div class="entry-meta">2025/9/7 5:47:45</div></div> </li> <li class="clear"> <a href="/wzjs/639500.html" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/宿迁怎样建设网站wordpress网址导航页面" alt=" 宿迁怎样建设网站wordpress网址导航页面" /> </div> </a> <div class="entry-wrap"> <a href="/wzjs/639500.html" rel="bookmark"> 宿迁怎样建设网站wordpress网址导航页面</a> <div class="entry-meta">2025/9/7 5:47:38</div></div> </li> <li class="clear"> <a href="/wzjs/639506.html" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/网站流量统计表北京工装装饰公司排行榜" alt=" 网站流量统计表北京工装装饰公司排行榜" /> </div> </a> <div class="entry-wrap"> <a href="/wzjs/639506.html" rel="bookmark"> 网站流量统计表北京工装装饰公司排行榜</a> <div class="entry-meta">2025/9/7 5:48:18</div></div> </li> <li class="clear"> <a href="/wzjs/639505.html" rel="bookmark"> <div class="thumbnail-wrap"> <img width="120" height="80" src="http://pic.xiahunao.cn/yaotu/网站宝二级域名怎么设置深圳教育网站设计公司" alt=" 网站宝二级域名怎么设置深圳教育网站设计公司" /> </div> </a> <div class="entry-wrap"> <a href="/wzjs/639505.html" rel="bookmark"> 网站宝二级域名怎么设置深圳教育网站设计公司</a> <div class="entry-meta">2025/9/7 5:48:11</div></div> </li> </ul> </div> <div class="leftdiv2"> </div> </aside> </div> <footer id="colophon" class="site-footer"> <div class="clear"></div> <div id="site-bottom" class="clear"> <div class="container"> <div class="menu-m_footer-container"> <ul id="footer-menu" class="footer-nav"> <li> <strong> <a href="/">dtcms介绍</a></strong> </li> <li> <strong> <a href="/">商务合作</a></strong> </li> <li> <strong> <a href="/">免责声明</a></strong> </li> </ul> </div> <div class="site-info"> <p>CopyRight © <a href="/">dtcms</a>版权所有 </p> </div> </div> </div> </footer> </div> <div id="back-top"> <a href="#top" title="返回顶部"> <svg width="38" height="38" viewbox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect width="48" height="48" fill="white" fill-opacity="0.01" /> <path d="M24 44C35.0457 44 44 35.0457 44 24C44 12.9543 35.0457 4 24 4C12.9543 4 4 12.9543 4 24C4 35.0457 12.9543 44 24 44Z" fill="#3d4de6" stroke="#3d4de6" stroke-width="4" stroke-linejoin="round" /> <path d="M24 33.5V15.5" stroke="#FFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" /> <path d="M33 24.5L24 15.5L15 24.5" stroke="#FFF" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" /></svg> </a> </div> <script src='/templates/nzzt/js/common.js'></script> <script> $(function(){ $('.source_url').text('原文地址:'); }); </script> </body> </html>