IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:哈希函数

共 2 篇相关文章

IT 累计浏览 1,975

哈希函数介绍 | 哈希算法

这篇讲的是哈希函数的核心概念与各类算法的应用对比。作者从哈希函数作为关键字到存储地址的“映射”本质出发,重点解析了哈希应用中需要解决的“冲突”问题。 文章的核心在于系统梳理了几类主流的加密哈希算法。它介绍了MD5、SHA-1、SHA-2、SHA-3及RIPEMD-160的基本原理,并结合Node.js代码示例,直观展示了它们的输出。关键点在于对比了它们的安全状态与适用场景:例如,MD5因碰撞问题已不适合安全用途,更多用于文件校验;SHA-1正被各大厂商逐步弃用;而SHA-2与SHA-3则代表了当前更安全的选择。 除加密算法外,文章也简要提及了用于高速查找的非加密算法,如MurmurHash,拓宽了“哈希”的应用图景。整体上,文章清晰地梳理了“为何用哈希”以及“如何根据场景选择不同哈希算法”这两个核心问题。

IT 累计浏览 3,053

我为什么要使用哈希

这篇讲的是如何用哈希技巧解决一个经典的算法问题:在二叉树中找出所有结构完全相同的子树。 文章从一道大厂面试题切入。问题要求给定一棵二叉树,找出所有彼此完全相等的子树对。作者分享了自己的通过面试的解法,核心思路正是借助哈希。通过后序遍历整棵树,为每个节点计算一个哈希值——叶子节点用一个固定值(比如 md5("")),非叶子节点则将其左右子树的哈希值拼接后再次哈希。这样,任何子树都能被映射为一个唯一的哈希指纹。 计算出所有子树的哈希后,将它们放入哈希表。哈希值相同的子树,其结构“有可能”完全相同,但需要二次验证以排除哈希冲突。验证过程是递归地同时遍历两棵树,检查所有节点的左右子树存在状态是否一致。文章还提到了一个关键的优化:通过记录子树深度,在验证前就能排除掉大量哈希值相同但深度不同的“伪匹配”,极大地减少了不必要的递归检查。 整个过程清晰地展示了哈希作为一种“指纹”技术,在加速查找与比对操作中的强大作用,将复杂问题的复杂度显著降低。