密码学-消息认证和散列函数(六)

消息认证和散列函数

认证函数

  • 消息加密函数

    • 用完整信息的密文作为对信息的认证

    • 对称加密

    在这里插入图片描述

    • 公钥加密和认证

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

    • 从根本上说,信息加密提供的是保密性而不是真实性

  • 消息认证码MAC

    • MAC是消息和密钥的函数,产生一个固定长度的值作为认证标识
    • 使用对称密钥实现MAC
  • 散列函数

    • 是一个公开的函数,将任意长度的信息映射成一个固定长度的信息
    • 是单向散列,且能够抗强弱碰撞
    • 与MAC的区别,没有密钥,输入只有一个
    • 能够检测出消息是否发生变化

散列函数的应用

  • 对称加密散列码,实现MAC : M ∣ ∣ E ( k , H ( M ) ) M || E(k,H(M)) ME(k,H(M))

    在这里插入图片描述

  • 公钥加密散列码,实现数字签名 M ∣ ∣ E ( P R a , H ( M ) ) M || E(PR_a,H(M)) ME(PRa,H(M))

    在这里插入图片描述

  • 对称密码加密签名,实现保密性 E ( K , M ∣ ∣ E ( P R a , H ( M ) ) ) E(K,M||E(PR_a,H(M))) E(K,ME(PRa,H(M)))

    在这里插入图片描述

  • 带秘密值的散列码 M ∣ ∣ H ( M ∣ ∣ S ) M||H(M||S) MH(MS)

    在这里插入图片描述

MD5算法概述

  • 填充数据
    • 首先计算数据长度(bit)对512求余的结果,如果不等于448,就需要填充数据使得数据长度对512求余的结果为448,其填充方式为第一位填充1,其余位填充0.填充后数据长度为512*N+448。
  • 记录数据长度,附加消息长度
    • 用64位来存储填充前数据的长度,这64位将加在填充后数据的后面,这样最终的数据长度为512*N+448+64=(N+1)*512
  • 初始化缓冲区,装入标准幻数
    • A=01234567 B=89ABCDEF C=FEDCBA98 D=76543210
  • 分组处理消息,四轮循环运算
    • 在上面对数据处理后,数据长度将是(N+1)/512,我们将每512位(64字节)作为一块,总共要循环N+1次,并将块细分为16个小组,每组的长度为32位(4字节),这16个小组即为一轮,总共得循环4轮,即64次循环。总的来说我们需要(N+1)个主循环,每个主循环包含了64次子循环,来不断的改变幻数A,B,C,D才能最终得到数据的MD5值。
  • 输出消息摘要

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值