手记

【九月打卡】第1天-C01学习密码学

  • 课程名称:人人都该懂密码学,通用密码学原理与应用实战
  • 章节名称:
    • 第3章:密码学核心-Hash函数
    • 函数
      • 3-1:Hash函数-本章导学
      • 3-2:无处不在的Hash应用
      • 3-3:介绍Hash函数的性质
  • 讲师姓名:马里布
  • 时间:2022-09-05 14:22

课程内容220904

  • cryptographic hash function

  • What is a hash function:

    • Hash函数有很多别名

      • 摘要算法
      • 杂凑算法
      • 数字指纹
      • 哈希值
      • 散列值
      • 检验和
      • ……
    • Hash brown:薯饼

      • hash切细;弄糟;反复推敲,这里指把马铃薯切成细条
      • brown:这里是动词意思,把东西烤成棕色的意思
      • 放在一起就是把切成细条的马铃薯烤成饼状
      • 把无限多转化为固定的状态过程叫hashing
    • Hash函数的数学表示

      • 一个函数H(x)=yH(x) = yH(x)=y被称为Hash函数
      • H:{0,1}∗→{0,1}nH: \{0, 1\}^* \rightarrow\{0, 1\}^nH:{0,1}{0,1}n
      • 函数特性
        • 随机性:输出的yyy是均匀分布的
        • 单向性:给定yyyxxx是不可行的
        • 无爪性:无法有效找到不同x1,x2x_1, x_2x1,x2,使得H(x1)=H(x2)H(x_1)=H(x_2)H(x1)=H(x2)
        • 有效性:能够快速计算
    • Hash函数的关注点

      • 是否密码学Hash:可以反映函数的计算复杂度与安全性问题
      • 摘要长度
      • 使用场景
    • 常见Hash方法

      密码学Hash 应用 非密码学Hash 应用
      md4 左侧以下推荐使用 Murmur3(32, 64, 128) C++标准库;Nginx;Hadoop等
      md5 Fnv(32-1024) Python与golang中有使用
      sha1 Siphash(64)
      sha224 Adler32
      SM3(256) 我国国秘算法系列 Crc(16, 32, 64) 压缩包,以及网络协议中数据报文检验码中
      sha256 ……
      sha384
      sha512
    • Java hashCode方法原码

      • public int hashCode() {
            int h = hash;
            if (h == 0 && value.length > 0) {
                char val[] = value;
                for (int i = 0; i < value.length; i++) {
                    h = 31 * h + val[i];
                }
                hash = h;
            }
            return h;
        }
        
      • 将上述代码写成公式:

        • ∑i=0nS[i]31n−i(mod 232)\sum^n_{i=0}S_{[i]}31^{n-i}(mod\ 2^{32})i=0nS[i]31ni(mod 232)

学习心得220904

Hash函数内容学习,感觉难度不小,这课听了很长时间,再查找一些资料,感觉才啃了下来

0人推荐
随时随地看视频
慕课网APP