哈希 随笔

看了B站视频之后随便写的一点东西
视频很好, 很清晰 哈希究竟代表什么?哈希表和哈希函数的核心原理

以下是一点笔记

哈希

哈希是不可逆的.

哈希的键(key)进行运算后, 才能得到值对应的内存地址.
给这个键进行运算的就是哈希函数了.

哈希函数有多种实现形式, 但是都有以下特点(原则):

  1. 不可逆, 所以要用到模运算, 模运算不可能逆运算的.
  2. 可变长度的输入(input)变成固定长度的输出(output)
  3. 还有一个, hash要求 相同的输入才能得到相同的输出. 不过上面的那种明显会出现冲突, 因此就要解决冲突:
    1. 一个简单的方法是链表法(封闭寻址法的一种), 当出现冲突的时候, 后面的那个可以以链表的方式挂在结点的后面, 这种方式理解与实现简单, 但是容易出现集群现象. 也就是链表越挂越多, 效率就会降低. Java的集合里面是采用的这种, 当链表长了就转换成红黑树.
    2. ... 当然还有其他的方法.
    3. 不过现在常见的是一些固定的哈希算法: md5, sha等. 可以把输入运算成固定的值. 这个值被称为摘要.
    4. 哈希可以破解, 比如彩虹表之类的.
posted @   潜行1  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示