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摘要却是一样的。

posted @ 2022-04-10 13:41  pogbar  阅读(138)  评论(0编辑  收藏  举报