hash值——软件中的唯一标识符

news/2024/7/24 14:07:42/

在软件中,“ hash”这个词有多种含义,但是我们在这里讨论的是维基百科所谓的

“cryptographic hash function”.。

 

hash是什么

简而言之,hash是字母和数字的字符串,意味着通过一个较小的、唯一的代码来识别一组信息。您可能在其他地方看到过关于hash的文章。如果您看到了类似下面这样的随机文本字符串,那么它可能是一个“ hash”

各种hash格式都有一长串听起来奇怪的名字,比如:

  1. MD5
  2. SHA1
  3. Whirlpool
  4. CRC32

但是他们都做相似的事情。哈希是每个人都可以使用的东西,从普通用户到网络安全专家。

Hash技术

hash一开始可能看起来很奇怪和复杂,但实际上它非常简单。hash有点像图像缩略图,因为与它们标识的文件相比,它们非常小。

 

文件的大小可以是1KB 或100TB,hash的大小总是相同的。hash值总是相同的; 不管文件有多大,也不管用什么计算机来计算它

hash的任务集中在一件事情上: 分配一个唯一的值。

为什么独特的值在hash中如此重要?

很久以前,我开始使用哈希表,同时试图确保我的公司报告没有问题。我当时在一家银行工作,使用 MicrosoftExcel 查找旧数据,一开始是寻找重复的条目。

幸运的是,Excel 有一个突出显示重复值的简单选项:

 

但是发现单个文本框是没有用的,整个过程中有很多类似的数字。相反,我需要找到重复的行。

要做到这一点有很多技巧,但当时,我急于抓住这些令人尴尬的数字。我决定将整行相乘(如下所示) ,然后检查结果列是否有重复的结果。

因为结果总是唯一的,所以我可以很容易地标记重复的行。

不幸的是,他们并不总是独一无二的。我遇到了一个问题,两个非常明显不同的行碰巧得到相同的乘法结果,或“假阳性。”

我需要找到一种方法来显示电子表格中每个唯一行的绝对唯一值。

不幸的是,我最终做了很多额外的工作,手动检查每个重复的行。这总比提交一份糟糕的报告要好,但我知道还有更好的方法。

不久之后,我学到了一个技巧,它可以为每一行输出一个唯一的数字: hash。这是一种贯穿整个计算过程的技术。

我为什么要用hash文件?

首先,无论文件有多大,或者使用哪台计算机来计算它,hash值总是相同的。

这种唯一性带来了有价值的信息,让你:

  1. 查找重复的文件,如查找和删除重复的照片。任何具有相同hash的文件都是重复的-您不需要打开和比较它们。
  2. 确定一个文件-您和同事正在更新同一个文件并将其上传到服务器。如果服务器不显示谁发布了什么内容,那么如何在不逐行进行更改的情况下确定哪个内容是您的?只需将您的计算机hash与远程文件hash进行比较。
  3. 确保您下载的文件是正确的。例如,如果你从一个网站得到一个软件程序,你怎么知道该网站或上传被劫持或损坏?hash可以帮助检测问题。
  4. 将权重分配给文件。如果一个程序的旧版本比最新版本工作得更好,了解hash可以让您确定使用哪一个。

尽管哈希算法在计算机出现的早期就已经存在,但是最近它们已经被用作在互联网上快速指纹识别文件的一种方法。

如何在软件安全中使用hash?

安全软件和专业人员对哈希文件的主要任务是确定文件的状态,无论是好的还是坏的。例如,病毒数据库中显示的hash应该从您的计算机上被阻止。哈希被认为是安全的和众所周知的(如 Firefox 和 Chrome 浏览器)可以安装没有问题。

 

这些检查声誉的工具大部分都内置在软件中,这意味着程序检查哈希作为其操作的一个正常部分。

如何使用hash

虽然许多hash工具通常是内置的,但是可以手动检查结果。

使用hash的一种方法是检查来自不受信任的网站的下载。一些安全研究人员甚至会检查来自受信任位置的文件的哈希值,尤其是在保存到关键工作站或服务器时。

虽然有很多工具可以做到这一点,但我使用的是用于 Windows、 Mac 和 Linux 的开源 PeaZip 归档管理器。

要查看哈希,右键单击一个文件,选择文件管理器-文件工具-校验和/哈希文件,并选择“剪贴板”选项卡。

从那里,您可以双击 SHA256值并复制(CTRL + C 或 Apple + C)。此值是安全性分析的标准。

unisca如何使用hash

unisca为我们的客户执行的一项重要工作就是将坏的、过时的或恶意软件排除在早期开发过程之外。尽可能的将安全左移,避免SDLC后期的巨大修复成本。

当分析一个新程序时,unisca会根据我们的数据库检查是否存在问题。如果它是一个已知的良好文件,它将像正常情况下一样传递。如果一个文件是未知的或者风险分析结果不良 ,它就会被阻止。完全分析之后,任何具有相同hash的文件都将以相同的方式处理。


http://www.ppmy.cn/news/33736.html

相关文章

RapidAI/paddleocr_convert:PaddleOCR中模型快速转换为ONNX格式

目录RapidAI/paddleocr_convert使用步骤更新日志RapidAI/paddleocr_convert 本仓库主要是针对性地将PaddleOCR中推理模型转换为ONNX格式。注意: 输入:推理模型的url或者本地tar路径输出:转换后的ONNX模型如果是识别模型,需要提供对…

图形视图框架 事件处理(item)

在图形界面框架中的事件都是先由视图进行接收,然后传递给场景,再由场景传递给图形项。通过键盘处理的话,需要设置焦点,在QGraphicsScene中使用setFoucesItem()函数可以设置焦点,或者图形项使用s…

技术分享 | PBM备份恢复

作者:张洪 爱可生南区 DBA 团队成员,主要负责mysql故障处理及相关技术支持。爱好旅游,摄影。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 概述 Per…

下载并导入MySQL示例数据库employees

MySQL示例数据库employees一、下载employees数据库二、MySQL官方参考手册三、具体步骤3.1 下载test_db3.2 在test_db-master中打开cmd(进入test_db-master目录)3.3 run-install3.4 验证employee数据3.5 show databases\tables & select * from departments**3.6 select * f…

前端git必备技能,如何合并分支以及出现合并冲突后如何解决

文章目录一、合并分支二、可能出现的冲突和解决三、过程分享一、合并分支 注意,我们常说的master或main主干也可以理解为分支,可以是分支合并到主干,或分支合并到分支。 需求:cloudweb的2.6.0和2.6.1是并行开发的,现…

linux中写定时任务

场景:我们生产环境中有大量的日志记录,但是我们的磁盘没有太大,需要定时清理磁盘 文章目录crond 定时任务详解安装定时任务crontab服务启动与关闭crontab操作crontab 命令test.sh查看日志丢弃linux中的执行日志Linux进入nano模式方式一方式二…

【8】核心易中期刊推荐——人工智能与机器人

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

【代码随想录-刷题学习JavaScript】day2-part02数组

继续数组的部分 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 今天会有个小结 一、LeetCode977.有序数组的平方 文章讲解 视频讲解 二、LeetCode 209.长度最小的子数组 题目建议: 本题关键在于理解滑动窗口,这个滑动…

太强了,英伟达面对ChatGPT还有这一招...

大家好,我是 Jack。 今年可谓是 AI 元年,ChatGPT、AIGC、VITS 都火了一波。 我也先后发布了这几期视频: 这是一个大模型的时代,AI 能在文本、图像、音频等领域大放异彩,得益于大模型。而想要预训练大模型&#xff0c…

int *p = a、p = a、*p = a

int *p &a; //初始化一个int *类型指针,同时将变量a的地址存入p指针这里是一个特殊用法,仅在初始化变量的时候可以使用,应分为两个部分去进行理解。int *p; //初始化一个int * 类型指针pp &a; //将变量a的地址存入p指针&#xff0c…

基于深度学习的动物识别系统(YOLOv5清新界面版,Python代码)

摘要:动物识别系统用于识别和统计常见动物数量,通过深度学习技术检测日常几种动物图像识别,支持图片、视频和摄像头画面等形式。在介绍算法原理的同时,给出Python的实现代码、训练数据集以及PyQt的UI界面。动物识别系统主要用于常…

哈夫曼编码、哈夫曼树

已知一个文件中出现的各字符及其对应的率如下表所示。若采用定长编码,则该文件中字符的码长应为( )。若采用Huffman编码,则字符序列face的编码应为( ) 字符abcdef频率4513121695码长决定了可以显示几位字符,题中一共有6位&#x…

【Linux】环境变量(基本概念 常见环境变量 测试PATH 环境变量相关命令)

文章目录环境变量基本概念常见环境变量测试PATH别的环境变量通过系统调用获取或设置环境变量环境变量相关命令export: 设置一个新的环境变量set: 显示本地定义的shell变量和环境变量unset: 清除环境变量通过代码如何获取环境变量环境变量 基本概念 环境变量(environment vari…

ThreadPool线程池源码解析

ThreadPool线程池源码解析 文章目录前言一、基本使用二、执行流程三、源码分析ThreadPoolExecutor 中重要属性ThreadPoolExecutor 内部类Workerexecute()方法addWorker(command, true)方法runWorker(worker )方法getTask()方法shutdown和shutdownNow四、…

Java栈和队列·下

Java栈和队列下2. 队列(Queue)2.1 概念2.2 实现2.3 相似方法的区别2.4 循环队列3. 双端队列 (Deque)3.1 概念4.java中的栈和队列5. 栈和队列面试题大家好,我是晓星航。今天为大家带来的是 Java栈和队列下 的讲解!😀 继上一个讲完的栈后&…

1.9 日本蜡烛图技术之支撑和压力的其他含义

破低反涨和破高反跌形态 支撑和压力的研究不能局限于涨跌幅边界研究,用K线图来验证会注意到很多突破来临的信号破低反涨形态 一种移动和反向移动,价格跌破支撑,然后反弹重新上涨通常建立新的支撑线 破高反跌形态:突破压力后&…

hadoop理论基础(一)

1.hadoop的组成2 HDFS概述HDFS(Hadoop Distributed File System)是一个分布式文件系统(1)NameNode:存储文件的元数据;如文件名、文件目录结构、文件属性,以及每个文件的块列表和块所在的DataNode等。(2)DataNode:在本地…

【测试开发篇4】测试模型

目录 一、软件测试V模型 编码前 概要设计: 详细设计: 编码后: 单元测试&集成测试 系统测试 验收测试 V模型的特点 优点: 缺点: 二、软件测试W模型 编码之前: 编码的时候: 编…

Three.js——learn01

Three.js——learn01Three.js——learn01本地搭建文档通过parcel搭建Threejs环境1.初始化2.安装parcel设置打包位置3.设置目录结构QuickStart安装threejsindex.htmlindex.cssindex.js启动Three.js——learn01 本地搭建文档 登录GitHub搜索three.js git clone https://github…

KubeSphere All in one安装配置手册

KubeSphere All in one安装配置手册 1. 初始化 1.1 配置apt源 # vi /etc/apt/sources.list deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiversedeb…