
比特币(BSV)知识库:比特币协议-RIPEMD-160
左侧:x ^ y ^ z 右侧:(x & y) | (~x & z) 左侧:(x | ~y) ^ z 左侧:(x & z) | (y & ~z) 右侧:z ^ (y | ~z) 0x00000000 0x5A827999 0x6ED9EBA1 0x8F1BBCDC 0xA953FD4E 0x50A28BE6 0x5C4DD124 0x6D703EF3 0x7A6D76E9 0x00000000 顶部代表上方轮次 底部代表下方轮次 顶部代表上方轮次 底部代表下方轮次 顶部代表上方轮次 底部代表下方轮次
发布日期: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决定。子块和整体压缩函数设计如图所示。
非线性函数
左侧和右侧的非线性函数操作如下:
常数k值
左侧k值依次为:
右侧k值依次为:
子块和压缩函数顺序
左侧子块按如下顺序选择:
右侧子块按同样顺序选择。
左右旋转
左侧旋转顺序如下:
右侧旋转顺序如下:
属性
本文内容基于某资源,经过修订和更新。项目由比特币协会发起,更多信息请访问知识库官网。
###声明 项目由比特币协会支持,详情请见官网。
本文为技术性内容,旨在提供比特币BSV相关信息,供开发者参考。如需进一步了解,欢迎参与社区讨论。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月28日 12时15分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
一些面试的准备的回答
2019-03-11
LeetCode Top-100 T22-括号生成
2019-03-11
svg基础+微信公众号交互(二)
2019-03-11
vscode设置eslint保存文件时自动修复eslint错误
2019-03-11
deepin 安装过程记录
2019-03-11
JAVA 多线程
2019-03-11
Java的 arraylist类【具体案例】
2019-03-11
删除DOM节点
2019-03-11
牛客-链表中环的入口节点(Java)
2019-03-11
【ARM自学笔记】ARM Cortex -A中断系统(程序篇)
2019-03-11
解决微信小程序中 calc 失效问题
2019-03-11
JS数组去重的方法
2019-03-11
堆的应用_topK算法和堆排序
2019-03-11
并查集(求连通块数量)
2019-03-11
最大半连通子图
2019-03-11
Remove Extra one 维护前缀最大最小值
2019-03-11
跳台阶
2019-03-11
另类加法,走方格的方案数,最近公共祖先
2019-03-11
线程学习5
2019-03-11
[Java Path Finder][JPF学习笔记][7]JPF输出详细程度设置
2019-03-11