Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
图片中的md5哈希在iOS/Android中有所不同_Android_Ios_Image_Hash_Md5 - Fatal编程技术网

图片中的md5哈希在iOS/Android中有所不同

图片中的md5哈希在iOS/Android中有所不同,android,ios,image,hash,md5,Android,Ios,Image,Hash,Md5,我有一个关于图像中md5散列的问题。我已经编写了一个android应用程序,它从它拍摄的每个图像生成md5哈希,并将图像保存在此文件名下。当我将该字符串与Windows PC上的程序进行比较时,它是完全相同的字符串。甚至在线生成器也会生成相同的字符串。所以我认为Android上的一切都很好。 现在说到iOS。。。我不知道是什么和如何,但iOS7会改变它得到的每一张图像。我想。 例如: 如果我制作了一张照片,从这张照片生成散列,并将其保存在我的Android或桌面上,它有一个与iPhone上的散列

我有一个关于图像中md5散列的问题。我已经编写了一个android应用程序,它从它拍摄的每个图像生成md5哈希,并将图像保存在此文件名下。当我将该字符串与Windows PC上的程序进行比较时,它是完全相同的字符串。甚至在线生成器也会生成相同的字符串。所以我认为Android上的一切都很好。 现在说到iOS。。。我不知道是什么和如何,但iOS7会改变它得到的每一张图像。我想。 例如: 如果我制作了一张照片,从这张照片生成散列,并将其保存在我的Android或桌面上,它有一个与iPhone上的散列不同的散列。 我甚至试着在iPhone上通过safari保存我的一张图片,然后将它发送回我的桌面。塔达,我之前又吃了一份。甚至图片的大小也相差约300b

有人能告诉我苹果在这里做什么以及如何避免这种情况吗?如果散列永远不会相同,我如何比较从android和iOS设备上的服务器下载的图像

我使用散列来比较图片是否正确地从我的服务器下载,但在这种情况下,它在iOS下不起作用

我在这里读过一篇类似的文章: 但对此没有直接的答案。我相信iOS中的md5方法是正确的,但我认为iOS会处理图像,所以md5总是不同的

多谢各位

编辑: 以下是生成哈希的代码:

+(NSString*)getHash:(UIImage *)bild{
    NSData *imageData = UIImagePNGRepresentation(bild);
    unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];

    CC_MD5(imageData.bytes, imageData.length, md5Buffer);

    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
        [output appendFormat:@"%02x",md5Buffer[i]];

    NSLog(@"Result: %@",output);
    return output;
}

我相信您是直接对UIImage对象进行哈希运算,而不是首先将其转换为NSData。您需要将其转换为NSData,然后执行哈希

NSData*dataFromImage=UIImagePNGRempresentationTheImage,压缩质量


//对dataFromImage执行哈希

您能告诉我们如何从映像创建哈希吗?Answare的thx:。已在使用NSData,请参阅操作中的编辑。请尝试使用:NSData*哈希=[NSData DATAWITHYBETS:const void*图像数据长度:CC_MD5_DIGEST_length];NSString*decodedString=[[NSString alloc]initWithBytes:hash.bytes长度:hash.length编码:NSUTF8StringEncoding];NSLog@%@,解码字符串;
+(NSString *)md5HashOfImage:(NSData *)imageData {
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    CC_MD5(imageData.bytes, (CC_LONG)imageData.length, digest);

    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];

    for( int i = 0; i < CC_MD5_DIGEST_LENGTH; i++ )
    {
        [output appendFormat:@"%02x", digest[i]];
    }

    NSLog(@"%@", output);
    return output;
}