轻量级8字节哈希函数算法

2023-11-25

我需要从可变长度字符串中提取 8 字节摘要,因此我正在寻找将在 c/c++ 中实现的算法。这将是微控制器上数字签名过程的一部分,因此它必须是:

  • 可以用几行代码编写,因为必须保留尽可能少的固件;
  • 资源消耗低,特别是RAM(最好小于100字节);
  • 足够强大,更改字符串中任意位置的单个字符都会更改整个摘要。

我查看了 crc64 等现有算法,但它们对于我的平台来说似乎太重了。


没有机会以 64 位进行安全散列。即使 160 位的 SHA-1 理论上也被认为是损坏的。如果您确实关心安全数字签名,则应该使用 SHA2-256。如果您不关心安全性,只是想要一个避免非对抗性冲突的哈希函数,只需使用以下内容即可:

constexpr uint64 P1 = 7;
constexpr uint64 P2 = 31;

uint64 hash = P1;
for (const char* p = s; *p != 0; p++) {
    hash = hash * P2 + *p;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

轻量级8字节哈希函数算法 的相关文章

随机推荐

  • 静态变量的实际内存位置是什么?

    静态变量是在程序执行的整个过程中分配的 因此堆栈不会 堆也不方便 那么这个变量在哪里呢 难道不应该有一个地方可以加载它吗 我们的记忆中有3段 堆栈段 包含局部变量和引用变量 保存堆中对象地址的变量 堆段 包含运行时创建的所有对象 仅对象加上
  • AX、AH、AL如何映射到EAX?

    我对x86寄存器的理解是 每个寄存器都可以被整个32位代码访问 并且它被分成多个可访问的寄存器 在这个例子中EAX作为一个 32 位寄存器 如果我们调用AX它应该返回前 16 位 如果我们调用AH or AL它应该返回 16 位之后的接下来
  • haskell中具有多参数函数的点运算符

    我想在 haskell 中编写一个无点函数 为了简单起见 我想创建这个函数 maxmin Ord a gt a gt a gt a gt a maxmin a b c max a min b c 我可以将其改进为 maxmin a b ma
  • ImageIO: JPEG 损坏的 JPEG 数据:数据段过早结束 iphone - 如何捕获此问题?

    我通过 HTTP 下载图像时收到此错误 我看过在这里回答但即使有效的图像也不会返回YES从函数 还有其他想法吗 获取图像的代码很简单 这发生在后台线程中 NSData data NSData dataWithContentsOfURL NS
  • 导航控制器透明栏样式不起作用

    我正在使用导航控制器 并且我将样式设置为 navController navigationBar barStyle UIBarStyleBlackTranslucent 但是当我运行我的程序时 导航控制器看起来像是在白色背景之上 而不是我的
  • 将总行附加到数据帧后删除 pandas 数据帧索引的名称

    我按一周中的每一天计算了一系列总计提示 并将其附加到底部totalspt数据框 我已经设置了index name为了totalspt数据框为无 然而 当数据框显示默认的 0 1 2 3 索引时 它不会在索引正上方的左上角显示默认的空单元格
  • 获取类型错误:__init__() 缺少 1 个必需的位置参数:尝试在包含条目的子表之后添加父表时“on_delete”

    我的 sqlite 数据库中有两个类 一个名为的父表Categorie子表称为Article 我首先创建了子表类并添加了条目 所以首先我有这个 class Article models Model titre models CharFiel
  • 我创建了一个带有自动刷新功能的 PrintWriter;为什么不自动冲洗?

    我的客户端是一个网络浏览器 并使用以下网址向我的服务器发送请求 http localhost 这是服务器端代码 问题出在run方法上ServingThread class class ServingThread implements Run
  • 学说2中的多态关系

    有没有办法实现Laravel在主义上的多态关系 这是一个例子 class Address protected street public function setStreet public function getStreet class
  • 枚举的枚举为 NULL

    我正在为我的 Java 1 6 大学课程开发一个 LALG 编译器 所以我上了类型课和语法课 枚举类型 public enum EnumTypes A OLA B MUNDO C HELLO D WORLD The order below
  • spring security中的手动认证逻辑应该去哪里——服务层还是表示层?

    我有这段代码 UserDetails userDetails userDetailsServiceImpl loadUserByUsername email Authentication authentication new Usernam
  • 从 Android 检索 GPS 修复中使用的卫星数量

    我正在尝试检索 GPS 修复中使用的卫星数量 我实现了两种不同的方法 如下所示 package ti utils import android app Activity import android content Context impo
  • 我可以复制或拦截 Java 中的输出流吗?

    我想拦截标准输出流 然后将内容复制到另一个流 但我也希望保持标准输出流像原来一样 我可以用 Java 实现这一点吗 您可以使用类似示例的内容TeeOutputStream在这里解释编写您自己的 Java I O 流类 基本上 您创建一个 T
  • 目前在 Jupyter/iPython 中动态更新绘图的正确方法是什么?

    在答案中如何在 ipython 笔记本中动态更新循环中的绘图 在一个单元格内 给出了如何在 Python 循环中动态更新 Jupyter Notebook 内的绘图的示例 然而 这是通过在每次迭代中销毁并重新创建绘图来实现的 并且其中一个线
  • 将缺失的日期添加到 pandas 数据框中

    我的数据可以在给定日期有多个事件 也可以在某个日期没有事件 我记录这些事件 按日期计数并绘制它们 然而 当我绘制它们时 我的两个系列并不总是匹配 idx pd date range df simpleDate min df simpleDa
  • 是否存在占用 0 字节的 C++ 类型

    我试图声明一个占用零字节的 C 变量 它在一个联合体中 我从 int 0 类型开始 我不知道这是否实际上是零字节 尽管 sizeof int 0 是 0 我需要一种更好的方法来声明 0 字节类型 并且希望可以将其类型定义为 nullType
  • 无法使用 127.0.0.1 连接到 mysql

    使用以下代码我可以连接到mysql mysql connect localhost username 但如果我改变localhost to 127 0 0 1我收到以下错误 无法连接到 127 0 0 1 上的 MySQL 服务器 13 为
  • 命令行参数的Shell脚本密码安全

    如果我使用密码作为命令行参数 则它在系统上是公开的ps 但是如果我在 bash shell 脚本中并且执行如下操作 somecommand p mypassword 这仍然会出现在进程列表中吗 或者这样安全吗 子流程怎么样 不安全吧 协进程
  • 图库/AdapterView 子可绘制状态

    我正在使用图库视图 其中与每个项目相对应的视图都非常重要 并且由文本和多个按钮组成 当我单击以拖动图库视图 不在按钮之一上的某处 时 按钮的可绘制状态更改为按下 并且看起来好像所有按钮当前都被按下 此外 选定状态也会发生相同的行为 例如 子
  • 轻量级8字节哈希函数算法

    我需要从可变长度字符串中提取 8 字节摘要 因此我正在寻找将在 c c 中实现的算法 这将是微控制器上数字签名过程的一部分 因此它必须是 可以用几行代码编写 因为必须保留尽可能少的固件 资源消耗低 特别是RAM 最好小于100字节 足够强大