有没有可能存在MD5校验值和SHA256校验值都匹配却不同的两个文件

xufulin2 2021-04-08 01:55:21
有没有可能存在MD5校验值和SHA256校验值都匹配却不同的两个文件。如果有,那么两者都同时发生碰撞的概率是多大?最近我想弄一个联合引索,以便快速检索网盘系统里面是否存在哈希值匹配的文件。

下面是我正在设计中的表

create table tb_file
(
file_id bigint not null PRIMARY KEY AUTO_INCREMENT,
file_name text(255) not null,
file_size bigint not null,
file_type bigint not null,
file_status int not null,
file_upload_time text not null,
file_hash_md5 text(128),
file_hash_sha256 text(256),
index index_file_name(file_name(250)),
index index_file_status(file_status),
index index_file_hash_md5(file_hash_md5(128)),
index index_file_hash_sha256(file_hash_sha256(250)),
unique index_file_hash_md5_sha256(file_hash_md5(128), file_hash_sha256(122))
)AUTO_INCREMENT=10000 ENGINE=InnoDB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=Dynamic;
...全文
474 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xufulin2 2021-05-08
  • 打赏
  • 举报
回复
修正了一下表的设计。因为特定算法的哈希值计算,输出值的长度是固定的。MD5输出的是128bit的哈希值,转换成HEX字符串就只有32字节。我的联合引索(250*4字节限制)是可以同时塞下两个哈希值计算出来的结果的。。。

create table tb_file
(
    file_id              bigint not null PRIMARY KEY AUTO_INCREMENT comment '文件ID',
    file_name            char(255) not null comment '文件名',
    file_size            bigint not null comment '文件大小',
    file_type            bigint not null comment '文件类型',
    file_status          int not null comment '文件状态代码',
    file_upload_time     DATETIME not null comment '文件上传时间',
    file_hash_md5        char(32) comment '文件MD5哈希值',
    file_hash_sha256     char(64) comment '文件SHA256哈希值',
    index index_file_name(file_name(250)),
    index index_file_status(file_status),
    index index_file_hash_md5(file_hash_md5(32)),
    index index_file_hash_sha256(file_hash_sha256(64)),
    unique key index_file_hash_md5_sha256(file_hash_md5(32), file_hash_sha256(64))
)AUTO_INCREMENT=10000 ENGINE=InnoDB CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=Dynamic;
trainee 2021-04-09
  • 打赏
  • 举报
回复
肯定会存在,但是你无法根据哈希值,去杜撰一个文件,只能用穷举法一个个去试。 碰撞的概率看它们的位数,MD5是128bit,概率>2的128次方之一, SHA256为256bit,概率>2的256次方之一,SHA256不但位数多,算法更离散。

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧