[Note]笔USI协议中Hash的应用

USI中,Hash的作用是什么?

在笔出墨之前,USI controller需要得到笔的一系列信息,例如颜色、宽度、压力、倾角信息等等,才允许出墨。

为了加快出墨的速度,USI controller内置一个information cache,存储已经配对过的笔的信息,然后,controller将这些信息计算得到一个code,code是比较短的,笔也将自己的信息计算得到一个code,controller会用get hash包去得到笔的code,通过比较controller的code和笔的code是否一致,就可以得知这根笔的信息是不是已经存在controller的cache里面了,如果已经存了,就可以跳过配对操作,加快出墨的速度。

根据上诉描述,这个编码需要满足几个条件:

  1. 对于任意输入信息,输出编码长度最好是固定的且较短
  2. 实现要尽量简单
  3. 计算速度尽量快,效率要高
  4. 一对一映射, 相同输入要有相同的输出,不同的输入要有不同的输出编码

为了满足上诉条件,Hash code是比较合适的。

哈希是什么?它的数学原理是什么?

哈希码(Hash code)是将任意长度的输入数据映射成固定长度的输出字符串的过程。这个输出字符串通常被称为哈希值或摘要。哈希码的目的是为了唯一地标识输入数据,而且即使输入数据的微小变化也应该导致哈希值的显著变化。

主要特点包括:

固定长度输出: 无论输入数据有多长,哈希函数都会生成一个固定长度的哈希码。

相同输入产生相同输出: 对于相同的输入,哈希函数始终会生成相同的哈希码。

不可逆性: 通常,从哈希码推导出原始输入的过程是不可逆的。即使微小的输入变化,哈希码也应该是完全不同的。

碰撞: 哈希函数可能会产生不同的输入映射到相同的哈希码,这被称为碰撞。好的哈希函数设计会尽量减小碰撞的概率。

哈希码在计算机科学和密码学中有许多应用,包括密码存储、数据完整性验证、数据结构的快速查找等。常见的哈希算法包括MD5(已不安全)、SHA-1(已不安全)、SHA-256等。在安全敏感的应用中,更强大的哈希算法通常更受青睐,因为它们更难以被暴力破解。

哈希算法的数学计算包括乘法、加法、取模(取余数)等操作的混合运算,几种计算结合以实现算法的目的,具体的算法设计原理请自行搜索相关论文和文献。

MurmurHash3的特点是什么?实现方式是什么?

USI选用的Hash算法是MurmurHash3,32位的版本。

MurmurHash3是一种非常快速、高效的非加密哈希函数,由Austin Appleby于2008年设计。它是MurmurHash哈希系列的第三个版本。MurmurHash3被广泛用于各种应用中,包括散列表、分布式存储、网络协议等。

MurmurHash3有几个不同的变体,包括32位和128位版本,分别生成32位和128位的哈希值。最常用的是32位版本,它在性能和均匀性方面都表现良好。

MurmurHash3的特点包括:

速度快: MurmurHash3是为了追求高速性能而设计的,适用于对速度有较高要求的应用。

低碰撞率: MurmurHash3在设计上考虑了尽量减小碰撞的概率,使得不同的输入在哈希后的分布尽量均匀。

简单: MurmurHash3相对简单,易于实现和使用。

以下是一个简化的MurmurHash3 32位版本的示例(使用伪代码表示):

function MurmurHash3_32(key, seed):

    c1 = 0xcc9e2d51

    c2 = 0x1b873593

    r1 = 15

    r2 = 13

    m = 5

    n = 0xe6546b64

    hash = seed

    for each 4-byte chunk of key:

        k = get_next_chunk(key)

        k *= c1

        k = (k << r1) | (k >> (32 - r1))

        k *= c2

        hash ^= k

        hash = ((hash << r2) | (hash >> (32 - r2))) * m + n

    return hash

请注意,由于MurmurHash3是非加密哈希函数,不适用于对安全性要求很高的场景。

CRC算法和Hash的异同点

CRC(Cyclic Redundancy Check)和哈希函数都是用于数据校验的技术,但它们有一些关键的异同点。

共同点

数据校验: CRC 和哈希函数都用于检测数据是否在传输或存储中发生了错误。它们的主要目标是确保数据的完整性。

不可逆性: 在典型的使用场景中,它们都是不可逆的,即无法从校验值还原出原始数据。

数据压缩:都可以从任意长度的数据生成一个固定长度的数据。

不同点

设计目标:

CRC: CRC 主要用于检测传输或存储介质中的错误。它是一种线性的校验方法,主要关注于检测是否存在误码,而不关心误码的位置或形式。

哈希函数: 哈希函数旨在将数据映射到固定长度的哈希码,用于唯一标识数据或进行快速数据检索。它是一种非线性的方法,通常用于生成数据的唯一标识符。

生成机制:

CRC: CRC 使用多项式除法来生成校验值,将余数附加到原始数据上。生成的校验值与数据的位相关。

哈希函数: 哈希函数使用复杂的算法,经过多轮的运算将任意长度的输入映射到一个固定长度的输出。生成的哈希码与整个输入数据相关。

应用领域:

CRC: 主要用于通信协议、存储介质等领域,以检测数据传输中的错误。

哈希函数: 主要用于数据完整性验证、密码学、数据结构中的快速查找等领域。

碰撞处理:

CRC: CRC 主要关注错误的检测,而不是处理碰撞。在 CRC 中,不同的输入可能产生相同的余数,但这通常不是主要关注点。

哈希函数: 哈希函数通常需要处理碰撞的可能性,即不同的输入产生相同的哈希码。好的哈希函数设计会尽量减小碰撞的概率。

总体而言,CRC 和哈希函数是两种不同的技术,适用于不同的场景和目标。选择使用哪种技术取决于具体的需求和应用情境。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab模型变量一般说明,标定和显示量,以及产生a2l文件,自动填充a2l地址,并使用标定工具ati进行标定(推荐重要)

注意我是用的是matlab2019b 1&#xff0c;输入标定量&#xff0c;使用constant&#xff0c;用cal函数包裹 2&#xff0c;输出显示量&#xff0c;在划线上标注&#xff0c;然后用display函数包裹&#xff0c; 第一步和第二步完成以后&#xff0c;生产标定量a2l 3&#xff0c;输入…

【SSH】Linux常用命令

文章目录 一、目录操作1.1 cd命令1.1.1 返回上一级目录1.1.2 返回上两级目录1.1.3 进入某个目录下1.1.4 返回上次所在目录1.1.5 进入某目录1.1.6 返回根目录1.1.7显示目录路径 1.2 查看&#xff08;ls&#xff09;选项1.2.1 查看当前目录中的文件1.2.2 显示目录结果1.2.3 显示文…

什么是护网行动?

护网&#xff0c;也称“网络保护”&#xff0c;是指网络安全人员对企业或组织的网络进行检查、维护和保护&#xff0c;以防止网络受到黑客攻击、病毒、木马或其它恶意程序的侵入和损害。护网工作包括&#xff1a;网络安全规划、网络配置和控制、漏洞发现和修复、入侵检测和防范…

Qt 多次绘图

使用Qt 的时候发现&#xff1a; 背景&#xff1a;自己定义一个类&#xff0c;把它和某个ui文件绑定。(类似 Qt creator 默认创建的工程&#xff09;问题&#xff1a;当鼠标在窗口内单击的时候会触发2次绘图。&#xff1f;难道不应该是一次吗&#xff1f; 于是开始了如下的测试…

电源设计如果只看电压跌落,不看电流密度会怎么样?

高速先生成员--黄刚 大家知道&#xff0c;电源直流设计的理论其实非常的简单&#xff0c;归根到底就是欧姆定律&#xff0c;电源芯片给负载供给电流&#xff0c;电流经过传输路径有一定的压降&#xff0c;最终到达负载端的电压值就是我们接收芯片关注的结果。 在PCB设计中&…

新网站收录需要多长时间完成审核

新网站的收录时间因多种因素而异。 一般来说&#xff0c;新上线的网站可能在最快3-7天内被百度收录&#xff0c;尤其是那些有高质量内容的网 然而&#xff0c;通常情况下&#xff0c;新网站的收录可能会在7-15天左右发生。 有些情况下&#xff0c;如果网站的内容足够丰富和有价…

nvm 配置淘宝镜像失效,以及安装node后 npm-v 无效

win11 nvm版本 1.1.4 和1.1.7和1.1.12&#xff08;目前最新版本24年 一月二十三日&#xff09; 以上nvm版本都会出现一下问题&#xff0c; 从https://github.com/coreybutler/nvm-windows/releases 下载nvm安装包如下图 傻瓜式安装后&#xff0c;不用去配置环境变量&#…

【2023】无痕制作钓鱼邮件

当涉及到网络安全和信息保护时&#xff0c;钓鱼攻击一直是备受关注的话题。钓鱼攻击是一种利用社交工程手段欺骗用户&#xff0c;诱使其提供敏感信息或执行恶意操作的攻击方式。它不仅威胁个人用户的隐私和财产安全&#xff0c;也对组织和企业的机密信息构成严重威胁。为了增强…

Linux第35步_在“移植uboot”前安装libncurses5-dev

在“移植uboot”前&#xff0c;需要在Ubuntu中安装“libncurses5-dev”&#xff0c;否则在“编译uboot”时&#xff0c;会报错。目的是保证顺利移植“uboot”。 1、打开终端 2、输入“sudo apt-get install libncurses5-dev bison flex回车”&#xff1b; 3、输入密码“1234…

3W Star 网易云音乐第三方开源 API 仓库因侵权被要求删除

NeteaseCloudMusicApi是一个使用Node.js编写的非官方网易云音乐API&#xff0c;用于获取网易云音乐平台的歌曲信息。该项目是完全开源的&#xff0c;在GitHub上获得了超过3万的star。 根据公开信息&#xff0c;NeteaseCloudMusicApi的主要目的是整理网易云音乐公开的网页接口&a…

Linux逻辑卷创建与扩容

​ 钢铁知识库&#xff0c;一个学习python爬虫、数据分析的知识库。在职运维&#xff0c;又喜欢开发。 什么是lvm逻辑卷 ​ LVM&#xff08;逻辑卷管理&#xff09;是一种在Linux环境中广泛使用的磁盘管理技术。它允许管理员创建逻辑上的磁盘分区&#xff0c;这些分区可以跨越…

node 第二十三天 mongoDB shell 命令 CRUD 增删改查 基础

什么是 mongoDB shell 命令 mongoDB shell 命令就是在cmd窗口或者powershell窗口与mongoDB交互的命令, 以下简称mongosh 对应我们上一天安装的 mongosh 工具 有什么用 mongosh 对一般的开发者可能意义不大, 因为在开发过程中我们会基于某一款语言来使用mongoDB, 比如在node端我…

需求分析的结构化和面向对象方法

需求分析的方法&#xff0c;主要有结构化&#xff08;SA&#xff09;方法、面向对象分析&#xff08;OOA&#xff09;方法。另外有面向问题域的分析(Problem Domain Oriented Analysis&#xff0c;PDOA)方法&#xff0c;还有一些形式化方法例如VDM ( Vienna Design Method)和Z等…

基于cubeMX的正点原子miniSTM32对W25Q64的存储使用

一、实现目标 使用cubeMX建立项目工程&#xff0c;结合正点原子提供的hal库对W25Q64闪存调用的例程&#xff0c;实现W25Q64的读写。 二、实现过程 1、首先建立cubeMX工程&#xff0c;其他项设置不再叙述&#xff0c;只看连接W25Q64的SPI设置&#xff0c;这里使用SPI1&#xf…

阶乘分解《算法竞赛进阶指南》

阶乘分解《算法竞赛进阶指南》 \Huge{阶乘分解《算法竞赛进阶指南》} 阶乘分解《算法竞赛进阶指南》 题目地址&#xff1a;197. 阶乘分解 - AcWing题库 文章目录 题面输入格式输出格式数据范围输入样例&#xff1a;输出样例&#xff1a;样例解释 思路标程 题面 给定整数 N N…

2.1 关系模型的数据结构及形式化定义

2.1.1 关系 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 。 逻辑结构----二维表 从用户角度&#xff0c;关系模型中数据的逻辑结构是一张二维表 。 建立在集合代数的基础上。 1. 域&#xff08;domain&#xff09; 2. 笛卡儿积&#xff08;C…

RAF(requestAnimationFrame) 和 RIC(requestIdleCallback) 是什么

requestAnimationFrame requestAnimationFrame&#xff1a; 告诉浏览器在下次重绘之前执行传入的回调函数(通常是操纵 dom&#xff0c;更新动画的函数)&#xff1b;由于是每帧执行一次&#xff0c;那结果就是每秒的执行次数与浏览器屏幕刷新次数一样&#xff0c;通常是每秒 60…

layui给table列表添加鼠标悬停title显示

function tablehs() {tabhs table.render({elem: #ta1currentTablehs,id: ta1currentTablehs,url: orderComplaint/uploadlist,height: 300,autoSort: false,//禁用前端自动排序&#xff0c;否则会与数据库返回的数据顺序不一致contentType: application/json,cellMinWidth: 8…

记一次垃圾笔记应用VNote安装失败过程

特色功能简介 1.全文搜索: VNote支持根据关键词搜索整个笔记本或者特定文件夹内的文档内容&#xff0c;非常适合快速找到信息。 2.标签管理: 你可以给笔记添加标签&#xff0c;从而更好地组织和检索你的笔记内容。 3.自定义主题和样式: 进入设置&#xff0c;VNote允许你选…

proxy 代理的接口报错301问题

项目系统里仅仅这个接口报错&#xff0c;反向代理错误导致。 默认情况下&#xff0c;不接受运行在HTTPS上&#xff0c;且使用了无效证书的后端服务器。如果你想要接受&#xff0c;修改配置&#xff1a;secure: false&#xff08;简单意思&#xff1a;如果本地没有进行过https相…