crc32碰撞_hash碰撞的概率和可能性比你直觉中大得多

2023-11-06

注:这篇文章源自我10年前写的博客,今天看到有人谈密码安全的,再发一遍和大家讨论下。我发现哪怕10年后,这文章也没过时,很多人还是没拎清 冲突概率和样本空间的关系。

前段时间跟某大牛叽歪的时候,被提到我写的一篇文章(用CRC32实现短网址的一篇)里提到的CRC32算法有误。今天写代码,恰好需要用到这个函数,想起来了,就又回去看了下。确认了下,原先的文章并没有错误,但是有一处描述是很有问题的。

原文是这样的,『综合以上的思路,决定采用CRC32来实现。CRC32也是一个哈希算法,和MD5类似,不过它是32位的,故更短一些,速度也更快。它所能表示的范围为40亿,也会产生冲突,但是对于一般应用足够了,这也是个成本很低廉的做法。』

这只是提到的一种简单做法而已。但是确实是在这里可能误导数学不好的读者。我们知道,CRC32是32位的,MD5是128位(谁说16位、32位, 我敲死他。这里的位是bit,不是字符长度),也可以说是CRC128的演化版。通常我们习惯用MD5来做hash。但是我在之前文章为了简单和压缩长度,使用了CRC32。容易知道,CRC32的值域是2^32,即大约40亿。

很多人想当然地理解为,CRC32的冲突概率是1/2^32,这是错的。

对样本空间的误解

这是不是说在实际应用中,我们就可以大胆使用CRC32了呢?因为一般来说ÿ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

crc32碰撞_hash碰撞的概率和可能性比你直觉中大得多 的相关文章

  • 闲云拾财:想做副业,你必须知道的几个正规副业,值得收藏

    受疫情影响 很多人现在都很重视副业的发展 都希望通过副业收入来改善自己的生活 但很多人却不知道该做什么 今天给大家分享几类副业 大家可根据个人实际和兴趣爱好进行选择 做完后你一定会发现惊喜 一 卖宠物 如果你对宠物比较有研究 可以倒腾宠物作
  • linux文件解压缩:tar: /usr: Not found in archive

    一 问题描述 在使用tar zxvf zookeeper 3 4 6 tar gz usr local解压缩zookeeper 3 4 6 tar gz文件时遇到Not found in archive错误 二 问题原因及解决方案 原因 因
  • input实现图片或视频上传(样式+代码)

    背景 vue element ui 1 html div div
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • echart Y轴设置

    yAxis show true 是否显示 y 轴 position top y 轴的位置 top bottom type category 坐标轴类型 nameLocation end 坐标轴名称显示位置 nameGap 15 坐标轴名称与
  • Windows如何部署Redis

    一 简介 Redis Remote Dictionary Server 是一个由意大利人 Salvatore Sanfilippo 开发的 key value 存储系统 具有极高的读写性能 读的速度可达 110000 次 s 写的速度可达
  • 【Qt】d_ptr指针、p_ptr指针详解

    此文章可以参考 Pimpl技术的基本应用 PImpl机制以及Qt的D Pointer实现 Qt的d ptr本质上使用了pimp技术 D指针 保持一个库中的所有公有类的大小恒定的问题可以通过单独的私有指针给予解决 这个指针指向一个包含所有数据
  • Terrain Splatting

    Terrain Splatting 标签 网格优化2010 2011 05 16 16 17 1157人阅读 评论 0 收藏 举报 分类 OGRE 541 图形图像 746 游戏引擎 1651 图形引擎 1594 技术理论 1005 引擎开
  • Windows git 命令行通过token进行验证

    背景 从8月13日开始 github不再支持密码方式的身份验证 要求使用基于令牌的身份验证方式 现象 获取 token 后 需要改变原有的账号密码验证 所以需要使用生成的 token 进行更新凭证 但 git 官网针对的 mac 的操作up
  • pid是滞后超前校正_超前校正,滞后校正,超前滞后校正三种校正方法的比较

    展开全部 1 超前校正的目的是改善系统的动态性能 实现62616964757a686964616fe59b9ee7ad9431333431353332在系统静态性能不受损的前提下 提高系统的动态性能 通过加入超前校正环节 利用其相位超前特性
  • VuePress

    sidebar auto VuePress Vue 驱动的静态网站生成器 1 4 目录结构 VuePress 遵循 约定优于配置 的原则 推荐的目录结构如下 docs vuepress 可选的 components 可选的 theme 可选
  • 微信小程序之实名认证人脸识别接口-wx.startFacialRecognitionVerify

    小程序前端使用人脸识别功能 绑定用户 开始实名认证的方法 调用摄像头 facialRecognitionVerify function userName userIdCard wx startFacialRecognitionVerify
  • Visual Studio 2017,C++MFC免注册调用大漠插件图文教程,详细版

    Visual Studio 2017 C MFC免注册调用大漠插件图文教程 详细版 前言 提示 这里可以添加本文要记录的大概内容 有很多人都在问C MFC怎么免注册调用 其实这些都有参考但是对于新手来说 编译器对新手的不友好 很多编程新手就
  • ElementUI按需引入各种组件

    ElementUI按需引入各种组件 一 首先按需引入前奏 安装element ui npm i element ui S 安装按需引入必要插件 npm install babel plugin component D 二 修改 babelr
  • VSCode汉化设置中文

    http efonfighting imwork net 欢迎关注微信公众号 一番码客 获取免费下载服务与源码 并及时接收最新文章推送 在VSCode中按下快捷键 Ctrl Shift P 显示命令面板 Show Command Palet
  • SQL Server辅助插件——SQL Prompt

    前言 当我们对某个程序进行维护或者完善时 必不可少的就是跟数据库或者以前开发人员写的sql语句打交道 当我们 对数据库表的结构不熟悉时 修改或者编写sql语句将是一件很痛苦的时间 而且sql server有没有像vs等软件可以提供 强大的智
  • 如何使用 wget 下载一个目录下的所有文件

    今天想要下载编译原理的 虎书 上的资料 使用wget但只是下载了一个index html 如下 于是我就参考资料 写此博客以记录 方法如下 wget r np nH R index html http url including files
  • npm和cnpm下载安装及VUE的创建

    npm和cnpm下载安装及VUE的创建 1 node js下载 node js官网 http nodejs cn download 下载安装后cmd输入以下命令查看版本 2 配置npm 打开node js的安装目录 我这里是D nodejs
  • 毕设-仓库管理的设计与实现

    package com ken wms common controller import com ken wms common service Interface CustomerManageService import com ken w

随机推荐

  • 用js来实现自定义弹框

    前言 个人作业上传 大家可参考但不可转载 实现将弹框的样式统一封装在一个对象中方便后续的修改
  • 开关电源环路稳定性分析(05)-传递函数

    大家好 这里是大话硬件 经过前面4篇文章的梳理 估计很多人已经等不及了 什么时候可以开始环路的分析 为了尽快进入到大家关心的部分 这一讲我们正式进入环路分析的第一部分 传递函数 传递函数 简单的理解就是输入和输出之间的关系 为了方便我们仅仅
  • 【linux】linux 基础正则表达式、字符串截取、比较、分支、while循环

    1 概述 正则表达式用来在文件中匹配符合条件的字符串 正则是包含匹配 grep awk sed等命令可以支持正则表达式 通配符用来匹配符合条件的文件名 通配符是完全匹配 ls find cp这些命令不支持正则表达式 所以只能使用shell自
  • IDEA中设置vue vue3+ts项目的@跳转

    网上基本都是这个方法但是试了对我不适用 idea vue项目通过 跳转 vue设置完 映射路径之后在IDEA中无法跳转 兜兜转转原来只需 在tsconfig json中加入如下配置就行 compilerOptions baseUrl pat
  • leetcode 5749. 邻位交换的最小次数

    邻位交换的最小次数 给你一个表示大整数的字符串 num 和一个整数 k 如果某个整数是 num 中各位数字的一个 排列 且它的 值大于 num 则称这个整数为 妙数 可能存在很多妙数 但是只需要关注 值最小 的那些 例如 num 54893
  • 使用stylecop 规范C#编码

    可直接在VS操作完成 简单易懂 第一步 打开VS 第二步 安装软件 第三步 规则修改 第四步 规则生效 stylecop 是代码静态检查分析的一大利器 可以自定义检查规则 安装操作使用方便 相信很多写C 的朋友都会使用的到 下面详细介绍安装
  • XP下采用DirectShow采集摄像头

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家提出意见 一起讨论 需要示例源码的请独自联系我 前提 摄像头能正常工作 摄像头有创建directshow filter 即 大家可以对比我的另一
  • 数据规约

    主成分的计算步骤 主成分的代码实现 设置工作空间 把 数据及程序 文件夹拷贝到F盘下 再用setwd设置工作空间 setwd F 数据及程序 chapter4 示例程序 数据读取 inputfile lt read csv data pri
  • z系列主板能装服务器系统吗,Intel Z390主板搭配8代酷睿现身:还能安装WIN7系统吗?...

    Intel今年为发烧友带来了最多18核心的Core X系列 搭配X299顶级主板 主流领域则有最多6核心的八代酷睿Coffee Lake S 搭配Z370主板 但坑爹的是 尽管八代和六七代酷睿都是LGA1151接口 但却被故意整成不兼容 因
  • 基于power bi上手业务数据可视化

    分析背景 偶然得到一份关于某连锁火锅品牌在2020年1月 8月的线上平台业务数据 如下图 心想正好利用这份数据 模拟实际业务中基于数据库与bi工具 实践开发可视化图表 一开始考虑用tableau 因为在大学跟刚工作的时候曾系统学习使用过 但
  • 栈的链性表的c语言实现方式 linkstack.h 和 linkstack.c

    linkstack h 文件 ifndef LINK STACK H define LINK STACK H include
  • 数据库 关系代数 投影概念理解

    关系R上的投影是从R 中选择出若干属性列组成新的关系 记作 A R t A t R 其中A 为R 中的属性列 投影操作是从列的角度进行的运算 例3 查询学生的姓名和所在系 即求Student关系在学生姓名和所在系两个属性上的投影 Sname
  • k8s集群新增节点

    如何动态的为k8s集群增加worknode节点 本文将详细介绍 kubeadm搭建k8集群详见 https blog csdn net wangqiubo2010 article details 101203625 一 VMWare xSp
  • 每日算法题(Day5)----取石子

    题目描述 有一种有趣的游戏 玩法如下 玩家 2 人 道具 N 颗石子 规则 游戏双方轮流取石子 每人每次取走若干颗石子 最少取 1 颗 最多取 K 颗 石子取光 则游戏结束 最后取石子的一方为胜 假如参与游戏的玩家都非常聪明 问最后谁会获胜
  • Linux Kafka 2.11-1.1.1 安装搭建

    Kafka是最初由Linkedin公司开发 是一个分布式 支持分区的 partition 多副本的 replica 基于zookeeper协调的分布式消息系统 它的最大的特性就是可以实时的处理大量数据以满足各种需求场景 比如基于hadoop
  • iframe无边框实现

  • Android 11 绕过反射限制

    1 问题出现的背景 腾讯视频在集成我们 replay sdk 的时候发现这么个错误 导致整个 db mock 功能完全失效 Accessing hidden field Landroid database sqlite SQLiteCurs
  • LeetCode1477-找两个和为目标值且不重叠的子数组

    给你一个整数数组 arr 和一个整数值 target 请你在 arr 中找 两个互不重叠的子数组 且它们的和都等于 target 可能会有多种方案 请你返回满足要求的两个子数组长度和的 最小值 请返回满足要求的最小长度和 如果无法找到这样的
  • 餐馆点餐系统(Java GUI + mysql)

    餐馆点餐系统 Java GUI mysql 开发环境 eclipse mysql 开发语言 Java SQL 本系统采用MVC模式开发的 果冻点餐系统 适合Java初级选手学习 本系统实现了用户注册登录 点餐 商家管理订单等一系列功能 首先
  • crc32碰撞_hash碰撞的概率和可能性比你直觉中大得多

    注 这篇文章源自我10年前写的博客 今天看到有人谈密码安全的 再发一遍和大家讨论下 我发现哪怕10年后 这文章也没过时 很多人还是没拎清 冲突概率和样本空间的关系 前段时间跟某大牛叽歪的时候 被提到我写的一篇文章 用CRC32实现短网址的一