Hash碰撞
查找资料,提供不少于3条md5算法和3条sh1算法的碰撞实例
1 提供数据和数据来源(图书,网站...)
2 用openssl命令验证碰撞,提交演示街头
环境:Kali,最新版openssl。
三种途径获得碰撞实例:
一、功能比较强大的反查网址:https://www.cmd5.com/
二、用反查代码
源代码如下
#include <openssl/md5.h>
#include <stdio.h>
#include <string.h>
void md5hexToString(unsigned char *md,char *result){
// char tmp[3];
for (size_t i = 0; i <= 15; i++){
sprintf(result+i*2,"%02x",md[i]);
}
return;
}
int main(int argc, char const *argv[])
{
//存储md5的hex结果
unsigned char md[16] = {0};
//存储hex对应的字符串结果
char result[33] = {0};
char str[33] = {0};
printf("请输入小于6位的数字\n");
scanf("%s",str);
int len;
len = strlen(str);
MD5(str,len,md);
md5hexToString(md,result);
printf("%s\n",result);
//碰撞
char result1[33] = {0};
char str1[33] = {0};
int i;
for(i=0;i<=99999;i++)
{
sprintf(str1,"%d",i);
printf("%s\n",str1);
len = strlen(str1);
MD5(str1,len,md);
md5hexToString(md,result1);
printf("%s\n",result1);
if(strcmp(result1,result)==0)
break;
}
printf("MD5碰撞得出输入为:%d\n",i);
// scanf("%s",str1);
return 0;
}
三、百度MD5实例
如:http://www.xefan.com/archives/83875.html
改动了两个数后MD5值保持相同
openssl验证如下:
再比如官方的文件碰撞,
参考网址:https://blog.csdn.net/linuxprobe2017/article/details/62049001
或者用MD5碰撞工具:
将其拖入fastcoll后得到两个文件
经过检验可以发现,第一个文档和第二个文档字符串不同,但最终MD5值相同
SHA1
实例:https://blog.csdn.net/caiqiiqi/article/details/68953730
Openssl验证
显然,两张图片颜色都不一样,但是SHA1摘要却是一样的。
星光荡开宇宙