1. hash 函数

  • 关键词

    • 任意长度输入
    • 固定长度输出
  • 特征
    • 理论上输入跟输出并不是一对一
    • 实际使用假定不会出现碰撞或者冲突
  • 常用算法
    • (MD4 以前用,现在不大用了)
    • MD5
    • SHA-1
  • 应用场景
    • 数字签名
    • 文件校验

2. 哈希表

  • 是根据关键码值(Key, value)直接进行访问的数据结构
  • 常用算法
    • 直接寻址
    • 数字分析
    • 平方取中
    • 折叠法
    • 随机数
    • 除留余数法
  • 冲突处理
    • 链地址法
    • 建立公共溢出区
    • 再散列
    • 扩大“范围”
  • 性能
    • 散列函数是否均匀

3. 密码存储

  • 明文 vs 密文

    • 明文:可直接读懂含义
    • 密文:不可直接读懂
  • hash 密码
    • 防止密码泄露
    • 不能防备字典攻击
  • 加盐
    • 防备字典攻击
  • Python 代码示例
import hashlib

m = hashlib.md5()
m.update(bytes("password", "utf8")) # 这里加盐更好
password = m.hexdigest()
print(password)

  • 后记

    • 此为之前听“刘大拿”老师的所谓能值 9999 的《数据结构与算法》的课时所记笔记

    • 等了很久都没有更新,不出意外是没后续了

    • 因为有一段时间了,所以整理笔记时重听了一部分,倒是有“温故而知新”的惊喜

[DS+Algo] 011 哈希的更多相关文章

  1. [DS+Algo] 008 查找

    1. 常见搜索方法 顺序查找 最优时间复杂度:O(1) 最坏时间复杂度:O(n) 二分法 最优时间复杂度:O(1) 最坏时间复杂度:O(logn) 二叉树 若是"二叉搜索树" 最优 ...

  2. [DS+Algo] 010 二叉树的遍历

    二叉树遍历 深度优先 一般用递归 一些名词 遍历方式 英文 先序 Preorder 中序 Inorder 后序 Postorder 广度优先 一般用队列 Python 代码示例 class Node( ...

  3. [DS+Algo] 009 树的介绍

    目录 1. 树的概念 2. 树的术语 3. 树的种类 4. 常见应用场景 5. 二叉树 1. 树的概念 每个结点(节点)有 0 个或多个子结点 没有父结点的结点称为根结点 每一个非根结点有且只有一个父 ...

  4. [DS+Algo] 007 希尔排序及其代码实现

    步骤 将数组列在一个表(一行多列)中,按特定的步长进行插入排序 步长从 length/2 到 1,每次除 2 将数组转换至表是为了更好地理解这算法,算法本身还是使用数组进行排序 算法性能 (根据步长序 ...

  5. [DS+Algo] 006 两种简单排序及其代码实现

    目录 1. 快速排序 QuickSort 1.1 步骤 1.2 性能分析 1.3 Python 代码示例 2. 归并排序 MergeSort 2.1 步骤 2.2 性能分析 2.3 Python 代码 ...

  6. [DS+Algo] 005 三种简单排序及其代码实现

    目录 1. 冒泡排序 BubbleSort 1.1 算法描述 1.2 性能分析 1.3 Python 代码实现 2. 选择排序 SelectionSort 2.1 算法描述 2.2 选择排序的主要优点 ...

  7. [DS+Algo] 004 栈、队列及其代码实现

    1. Stack FILO (FirstInLastOut) 的链表结构 在程序编译环境上使用较多 常用操作 push pop peek is_empty size Python 代码示例 class ...

  8. [DS+Algo] 003 一维表结构 Python 代码实现

    接上一篇 前言 本篇共 3 个代码实现 严格来说 code1 相当于模仿了 Python 的 list 的部分简单功能 code2 与 code3 简单实现了"循环单链表"与&qu ...

  9. [DS+Algo] 002 一维表结构

    目录 1. 顺序表 1.1 分类 1.2 实现方式 1.3 扩容问题 1.4 操作 2. 链表 2.1 分类 2.2 链表相关操作 2.3 链表 VS 顺序表 3. 关于代码实现 1. 顺序表 1.1 ...

随机推荐

  1. [人物存档]【AI少女】【捏脸数据】现代风格

    点击下载:6543d037acaf2edd03b4679f821001e9380193ce.png

  2. Qt之去除窗口的标题栏、通过鼠标移动窗口

    设置标题栏图标,位置与大小示例 #include<QApplication> #include<QWidget> #include<QDebug> #include ...

  3. sh_09_字典的定义

    sh_09_字典的定义 # 字典是一个无序的数据集合,使用print函数输出字典时,通常 # 输出的顺序和定义的顺序是不一致的! xiaoming = {"name": " ...

  4. 用node.js搭建一个静态资源站 html,js,css正确加载 跳转也完美实现!

    昨天买了一个服务器想着用来测试一些自己的项目,由于是第一次建站,在tomcat,linux,node.js间想了好久.最终因为node搭建比较方便没那么麻烦就决定用node.js来搭建网站项目. 搭建 ...

  5. Unity3D_(地形)创建基本场景

    第一人称漫游场景 地形漫游系统: (自己绘制的GIF文件超过20MB放不上博客园.截取了几张图片)按键盘上的“上下左右”可以控制第一人称的漫游视角 资源包和项目源文件:传送门 自己做的项目可执行文件: ...

  6. 微信小程序_(视图)简单的swiper容器

    swiper容器效果 官方文档:传送门 swiper容器可实现简单的轮播图效果 结构程序 Page({ /** * 页面的初始数据 */ data: { }, /** * 生命周期函数--监听页面加载 ...

  7. task.delay 和 thread.sleep

    1.Thread.Sleep 是同步延迟. Task.Delay异步延迟. 2.Thread.Sleep 会阻塞线程,Task.Delay不会. 3.Thread.Sleep不能取消,Task.Del ...

  8. HTML userAgent

    <html> <body> <script type="text/javascript"> document.write("<p ...

  9. LeetCode 337. 打家劫舍 III(House Robber III)

    题目描述 小偷又发现一个新的可行窃的地点. 这个地区只有一个入口,称为“根”. 除了根部之外,每栋房子有且只有一个父房子. 一番侦察之后,聪明的小偷意识到“这个地方的所有房屋形成了一棵二叉树”. 如果 ...

  10. Git:本地项目与远程仓库的git/clone

      版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_40197828/article/details/79283278 初识Git命令行将本地项 ...