比特币(BSV)知识库:比特币协议-RIPEMD-160
发布日期:2021-05-13 19:32:30 浏览次数:18 分类:精选文章

本文共 857 字,大约阅读时间需要 2 分钟。

RIPEMD-160是一种基于Merkle–Damgård构造的加密哈希函数,用于比特币协议。它是RIPEMD算法的增强版本,产生160位哈希摘要。RIPEMD-160由80个阶段组成,每个阶段包含5个块,每个块运行16次。该模式运行两次,最终结果通过模32加法合并。

加密填充

RIPEMD-160的压缩函数处理16个32位无符号整数,因此消息需要预先填充到512位的倍数。输入的字节流需转换为32位词。填充方案与MD4相同,采用Merkle–Damgård强化方法,防止长度扩展攻击。填充方法包括在消息末尾添加1和消息长度(以位计)。

压缩函数

压缩函数由变量子块处理消息16次。总共有5种不同的子块变体,共80次运行。消息块经过两次处理,结果结合后输出。子块设计通过非线性函数、消息块的读取顺序、左移量和常数k决定。子块和整体压缩函数设计如图所示。

非线性函数

左侧和右侧的非线性函数操作如下:

  • 左侧:x ^ y ^ z
  • 右侧:(x & y) | (~x & z)
  • 左侧:(x | ~y) ^ z
  • 左侧:(x & z) | (y & ~z)
  • 右侧:z ^ (y | ~z)
  • 常数k值

    左侧k值依次为:

  • 0x00000000
  • 0x5A827999
  • 0x6ED9EBA1
  • 0x8F1BBCDC
  • 0xA953FD4E
  • 右侧k值依次为:

  • 0x50A28BE6
  • 0x5C4DD124
  • 0x6D703EF3
  • 0x7A6D76E9
  • 0x00000000
  • 子块和压缩函数顺序

    左侧子块按如下顺序选择:

  • 顶部代表上方轮次
  • 底部代表下方轮次
  • 右侧子块按同样顺序选择。

    左右旋转

    左侧旋转顺序如下:

  • 顶部代表上方轮次
  • 底部代表下方轮次
  • 右侧旋转顺序如下:

  • 顶部代表上方轮次
  • 底部代表下方轮次
  • 属性

    本文内容基于某资源,经过修订和更新。项目由比特币协会发起,更多信息请访问知识库官网。

    ###声明 项目由比特币协会支持,详情请见官网。


    本文为技术性内容,旨在提供比特币BSV相关信息,供开发者参考。如需进一步了解,欢迎参与社区讨论。

    上一篇:比特币(BSV)知识库:比特币协议-签名标识(SIGHASH flags)
    下一篇:比特币(BSV)知识库:应用-区块浏览器(Block explorer)

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年04月28日 12时15分06秒