子字符串 md5 碰撞

2023-11-21

I need a 4-character hash. At the moment I am taking the first 4 characters of a md5() hash. I am hashing a string which is 80 characters long or less. Will this lead to collision? or, what is the chance of collision, assuming I'll hash less than 65,536 (164) different elements?


嗯,每个角色md5是一个十六进制位。这意味着它可以具有 16 个可能值之一。因此,如果您只使用前 4 个“十六进制位”,则意味着您可以16 * 16 * 16 * 16 or 16^4或 65536 或2^16的可能性。

因此,这意味着结果的总可用“空间”只有 16 位宽。现在,根据生日攻击/问题,有以下发生碰撞的机会:

  • 50%机会->300 entries
  • 1%机会->36 entries
  • 0.0000001%机会->2条目。

所以发生碰撞的可能性相当大。

现在,您说您需要 4 个字符的哈希值。根据具体要求,您可以执行以下操作:

  • 4 个十六进制位用于16^4(65,536) 个可能值
  • 4 个字母位26^4(456,976) 可能的值
  • 4 个字母数字位36^4(1,679,616) 可能值
  • 4 个 ascii 可打印位大约93^4(74,805,201) 个可能值(假设 ASCII 33 -> 126)
  • 4 个完整字节256^4(4,294,967,296) 个可能值。

现在,您选择哪个将取决于实际用例。哈希值需要传输到浏览器吗?你如何存储它等等。

我将给出每个示例(在 PHP 中,但应该很容易翻译/看看发生了什么):

4 个十六进制位:

$hash = substr(md5($data), 0, 4);

4 个字母位:

$hash = substr(base_convert(md5($data), 16, 26)0, 4);
$hash = str_replace(range(0, 9), range('S', 'Z'), $hash);

4 个字母数字位:

$hash = substr(base_convert(md5($data), 16, 36), 0, 4);

4 个可打印的 Ascii 位:

$hash = hash('md5', $data, true); // We want the raw bytes
$out = '';
for ($i = 0; $i < 4; $i++) {
    $out .= chr((ord($hash[$i]) % 93) + 33);
}

4 个完整字节:

$hash = substr(hash('md5', $data, true), 0, 4); // We want the raw bytes
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

子字符串 md5 碰撞 的相关文章

  • Perl 中的 SHA256 摘要

    我需要对电子邮件地址进行 SHA256 哈希 并且需要将结果作为字符串 我尝试了以下方法 use Digest SHA qw sha256 my data swara email protected cdn cgi l email prot
  • 使用 sha256 与用户 ID 进行哈希和加盐

    我将在我的网站上使用 sha256 以保护我的用户密码 并且作为盐 我正在考虑使用用户 ID int auto increment 这将是独特的 但不是很长和困难 并且公开 user php id 1 但它是否唯一很重要 对吧 hash s
  • 如何在没有 HTTPS 的情况下使用 Javascript 通过 HTTP 安全地发送密码?

    所有开发人员面临的非常基本的问题 每当用户提交表单时 密码都会通过网络发送 并且必须受到保护 我开发的网站没有 HTTPS 所有者既不想购买 SSL 证书 也对自签名证书不感兴趣 所以我想在提交表单时使用 Javascript 保护通过 H
  • 为什么 Ruby 的 1000 个哈希键和值对的数组总是按特定顺序排列?

    假设有一个包含 1000 个哈希值的数组 其中的对如下 id gt 1 name gt something created at gt 2010 08 18 当我使用循环打印出这 1000 条记录时 按理说 散列的键 值对顺序无法保证 但打
  • 使用 SUBSTR Oracle SQL 将 SPACE 添加到 CONCAT

    我试图将两列连接在一起 并用空格分隔 第一列需要 SUBSTR 另一列则不需要 我写了这个查询 SELECT CONCAT SUBSTR FIRST NAME 1 1 LAST NAME AS NAME FROM OEHR EMPLOYEE
  • 具有保序功能的哈希函数

    是否有任何带有uniq哈希码 如MD5 且保序的哈希函数 笔记 我不关心安全性 我需要它来排序 我有很多块 约1MB大小 我想对它们进行排序 当然我可以使用索引排序 但我想减少比较时间 理论上 如果我有 1 000 000 个 1MB 大小
  • Memcache密钥生成策略

    给定函数f1它接收 n 个字符串参数 就运行时性能而言 什么被认为更好 memcache 的随机密钥生成策略 我们的 Memcache 客户端对其获取的密钥进行内部 md5sum 哈希处理 public class MemcacheClie
  • 使用“Hash#fetch”相对于“Hash#[]”的好处

    我不确定在什么情况下我想使用Hash fetch over Hash 是否存在一个可以很好用的常见场景 三个主要用途 当该值是强制性的 即没有默认值时 options fetch repeat times 你也会收到一条很好的错误消息 ke
  • PHP:类似 Youtube 的短 ID,带有盐

    我需要对数据库 ID 进行编码 加密并将其附加到我的 URL 中 安全性不是我想要解决的问题 但我正在寻找具有中等安全性的东西 主要目标是拥有唯一且 URL 安全的短 ID 下面的代码片段似乎可以满足我的需要 来自http programa
  • php 字符串末尾的 Substr?

    我有这种数组 我会让它变得非常简单易懂 picture artist2 1 thumb jpg artist2 2 jpg artist2 3 thumb jpg artist2 4 jpg artist2 5 thumb jpg 现在我想
  • Symfony2 创建自己的编码器来存储密码

    我是 Symfony2 的新手 我可能有一个关于在数据库中编码用户密码的简单问题 我想以这种方式编码并存储在数据库中我的用户密码 encoded password salt sha1 salt raw password 我找到了各种编码器
  • 具有特定长度的字符串的哈希值

    有没有一种方法可以生成字符串的哈希值 以便哈希值本身具有特定的长度 我有一个生成 41 字节哈希值 SHA 1 的函数 但我需要它最大为 33 字节 由于某些硬件限制 如果我将 41 字节哈希截断为 33 我可能 当然 失去了唯一性 或者实
  • 如何从 PHP 字符串中获取 64 位整数哈希值?

    我需要 64 位字符串整数哈希值来实现哈希映射之类的功能 在我看来 没有可以返回 64 位整数的原生 PHP 哈希功能 我认为可以获取 sha1 哈希值的第一部分并将其转换为整数 然而 这不会带来最好的性能 而且转换似乎很棘手 当然 如果不
  • 在 Ruby 中创建数字、字符串、数组或哈希的 md5 哈希

    我需要在 Ruby 中为变量创建签名字符串 其中变量可以是数字 字符串 哈希值或数组 哈希值和数组元素也可以是这些类型中的任何一种 该字符串将用于比较数据库 在本例中为 Mongo 中的值 我的第一个想法是创建 JSON 编码值的 MD5
  • Ruby 中判断变量是哈希还是数组的优雅方法是什么?

    检查什么 some var是 我正在做一个 if some var class to s Hash 我确信有一种更优雅的方法来检查是否 some var is a Hash or an Array 你可以这样做 some var class
  • 如何测试两个哈希值(密码)是否相似?

    当用户创建密码时 我对其进行哈希处理 包括盐 并将其保存在数据库中 现在 当用户想要更改他或她的密码时 我想测试新密码是否与旧密码太相似 我已经在不同的服务上看到过这种情况 尤其是网上银行 所以 我想我会使用similar text or
  • MacOS X 上使用 crypt 进行 Python SHA512 加盐密码

    我正在尝试生成加密的密码字符串 类似于Linux中的 etc shadow 由于某种原因 我得到的输出是不同的 我有什么想法吗 一个比另一个长 不包括盐部分 usr bin python import crypt alg 6 SHA512
  • 为什么数组前需要加星号?

    我不知道这是哈希问题还是数组问题 但我不明白为什么第三个示例中需要星号 才能获得填充数据的哈希 如果没有它 它会输出一个空的哈希值 coding utf 8 require pp pp first name Shane last name
  • java中带有二维键的映射

    我想要一个在 Java 中由两个键索引的映射 在其中使用两个键放置和检索值的映射 需要明确的是 我正在寻找以下行为 map put key1 key2 value map get key1 key2 returns value map ge
  • hashlib 和 urandom 哪个更随机?

    我正在和一个朋友一起开发一个项目 我们需要生成随机哈希 在我们有时间讨论之前 我们都提出了不同的方法 并且因为他们使用不同的模块 我想问你们大家什么会更好 如果有这样的事情的话 hashlib sha1 str random random

随机推荐

  • SVN分支的一个分支

    我们的代码存储库包括 树干 分支 A 从主干开始 分支 B 从分支 A 开始 在分支 A 上工作的程序员希望将其重新集成到主干中 并继续仅在主干上工作 我们还不想将分支 B 重新集成到分支 A 中 是否可以让分支 B 与主干相关 而不是与分
  • 如何在不损坏文本的情况下去除点/噪音?

    我正在使用 OpenCV 和 Python 处理图像 我需要从图像中去除点 噪声 我尝试了扩张 使点变小 但是文本被损坏了 我还尝试了两次循环膨胀和一次腐蚀 但这并没有给出令人满意的结果 我还有其他方法可以实现这一目标吗 谢谢 EDIT 我
  • 当用户在输入字段中键入字符时突出显示 DIV 的文本

    我看过很多关于使用 javascript 在 DIV 中突出显示文本的帖子 但没有一个完全符合我的要求 我需要做的是在用户输入搜索词时逐个字符地突出显示特定 DIV 中的文本 相反 当用户退格或删除字符时 我需要 取消突出显示 同一 DIV
  • django.db.utils.IntegrityError:外键约束失败

    My 模型 py class Order models Model user models ForeignKey User blank True null True on delete models PROTECT customer ema
  • 如何从 Java 中的 SOAP 响应中提取数据?

    我设置了一个客户端来向国家气象局 SOAP 服务器发送请求 我收到了预期的响应 但我不确定从中提取所需数据的最佳方法 例如 XML 中有很多额外的数据 在 SOAPBody 中 但我只想获取我为 POJO 设置的参数 例如温度 的数据 提取
  • 从 JavaScript Online 访问客户端的“localhost”

    这就是我正在努力做的事情 我制作了一些包含 JavaScript 代码的 html 页面 并将它们托管在雅虎服务器上 现在 当具有特定浏览器的客户端查看这些网页时 JavaScript 代码使用XMLHTTPRequest在 h1ttp l
  • 向 Spring Boot 应用程序添加附加参数

    我想知道是否可以添加 spring 的附加参数 例如 Dspring profiles active prod到 Spring Boot 应用程序 以防将其作为service 我检查了自动生成的脚本spring boot maven plu
  • 如何在 Team Foundation Server 2015 中启用 C# 7 构建?

    我们在本地安装了 Team Foundation Server TFS 2015 我们希望使用 Visual Studio 2017 来利用最新的 C 语言功能 我们尚未准备好升级到 TFS 2017 需要执行哪些步骤才能在 TFS 201
  • 无法使用不同的用户名从 pg_dump 恢复 psql 数据库

    我需要使用 postgres 用户名 1 从计算机 1 转储一个 postgres 数据库 然后使用 postgres 用户名 2 将其恢复到计算机 2 上 我不断遇到错误 看起来备份文件想要使用 username1 当我在computer
  • 将值数组发送到 ruby​​ 中的 sql 查询?

    我正在努力解决似乎是红宝石语义问题 我正在写一个方法 需要一个参数数量可变从一个表单并创建一个Postgresql 查询 def self search params counter 0 query params each do key v
  • OpenX 异步标签

    我们都想让我们的网站更快 谷歌在这里展示了一些示例 http code google com speed articles html5 performance html 我们使用 OpenX 来提供广告 因此 假设浏览器支持 FF3 6 我
  • Boost.Multi precision cpp_int - 转换为字节数组?

    http www boost org doc libs 1 53 0 libs multi precision doc html index html 我刚刚开始探索这个图书馆 好像没有办法转换cpp int到一个字节数组中 有人可以看到这
  • 如果 go 中的一个 goroutine 发生错误,则关闭多个 goroutine

    考虑这个函数 func doAllWork error var wg sync WaitGroup for i 0 i lt 2 i wg add 1 go func defer wg Done for j 0 j lt 10 j resu
  • 从实现类调用 C# 接口默认方法

    C 8 支持接口中的默认方法实现 我的想法是将日志记录方法注入到这样的类中 public interface ILoggable void Log string message gt DoSomethingWith message publ
  • 什么是依赖属性?

    什么是 Net 中的依赖属性 尤其是在 WPF 上下文中 和普通房产有什么区别 我发现唯一有用且写得好的解释是 http www wpftutorial net dependencyproperties html 基本上 Dependenc
  • 通过应用内购买删除广告

    我正在寻找有关如何通过应用内购买删除应用程序中的广告的教程或解释 我会在我的应用程序中放置一些带有 ad mob 的广告 但我也希望用户在支付一点捐款时可以禁用这些广告 您是否知道可以在其中找到如何执行此操作的分步说明的网站或教程 或者我需
  • Android libc.so 崩溃?

    我正在使用 AndEngine 和PhysicsBox2DExtension 来制作游戏 我的游戏不断崩溃 我在未经过滤的 LogCat 中得到以下信息 07 06 13 25 27 266 I DEBUG 19582 07 06 13 2
  • 使用 React DropZone 将 CSV 转换为 JSON 客户端

    From 反应降落区 我收到一个带有 File preview 属性的 File 对象 其值为 blob url IE File preview blob http localhost 8080 52b6bad4 58f4 4ths a2f
  • 如何使用 ng2-charts 获取多个图表(条形图和折线图)?

    我有条形图 我想在此条形图上绘制平均线 我的解决方案 在数据集中 我添加类型为 的元素line https stackblitz com edit ng2 charts bar template file src 2Fapp 2Fapp c
  • 子字符串 md5 碰撞

    I need a 4 character hash At the moment I am taking the first 4 characters of a md5 hash I am hashing a string which is