我正在从iPhone相册中计算视频文件的md5值。每次我选择同一个文件时,它的md5值都不同。我还检查了数据长度(以字节为单位),它保持不变。所以我的问题是 - 为什么?这里有一些代码,其中包含我尝试过的许多方法之一。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:@"public.movie"])
{
NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
videoData = [NSData dataWithContentsOfURL:videoURL];
[videoData retain];
NSLog(@"VIDEO DATA MD5: %@", [videoData md5]);
NSLog(@"VIDEO DATA LEN: %d", videoData.length);
}
[self dismissModalViewControllerAnimated:YES];
}
#import <CommonCrypto/CommonDigest.h>
@implementation NSData(MD5)
- (NSString*)MD5
{
// Create byte array of unsigned chars
unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
// Create 16 byte MD5 hash value, store in buffer
CC_MD5(self.bytes, self.length, md5Buffer);
// Convert unsigned char buffer to NSString of hex values
NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x",md5Buffer[i]];
return output;
}
@end
md5
的实现是什么? - Carl VeazeyisEqualToData:
会返回YES
还是NO
?我想知道是否有一些元数据通过访问文件进行更新(特别是像“上次访问”这样的内容),以便每次获取相同的视频但不同的元数据。 - Carl Veazey[string1 isEqualToString:string2]
吗? - Eric G