Reputation: 33
I tried to use MD5 encryption for the iPhone app I'm creating. I created an md5.m file with the following code (copied from StackOverflow):
#import <CommonCrypto/CommonDigest.h>
NSString* md5( NSString *str ) {
const char *cStr = [str UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5( cStr, strlen(cStr), result );
return [[NSString
stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1],
result[2], result[3],
result[4], result[5],
result[6], result[7],
result[8], result[9],
result[10], result[11],
result[12], result[13],
result[14], result[15]
] lowercaseString];
}
I then tried to call the function (in a different .m file) using:
NSString *digest = md5(@"password");
But for some reason I keep on getting the error "Expected expression before 'mad5'"... What have I don't wrong?
Upvotes: 2
Views: 599
Reputation: 55354
Make sure you have placed NSString* md5( NSString *str );
in the header file that corresponds to the implementation file (.m). Also, make sure you import that header file into the class that will be using that function using #import TestClass.h
.
This has been tested:
TestClass.h
@interface TestClass : NSObject { }
NSString* md5 (NSString* str);
@end
TestClass.m
#import "TestClass.h"
#import <CommonCrypto/CommonDigest.h>
@implementation TestClass
NSString* md5( NSString *str )
{
const char *cStr = [str UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5( cStr, strlen(cStr), result );
return [[NSString
stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1],
result[2], result[3],
result[4], result[5],
result[6], result[7],
result[8], result[9],
result[10], result[11],
result[12], result[13],
result[14], result[15]
] lowercaseString];
}
@end
UsingClass.m
-(void)useMD5
{
NSString *digest = md5(@"password");
}
Upvotes: 1
Reputation: 1252
If I just take your code and paste it into a simple Foundation tool, everything compiles and runs.
If you copy/pasted your error, then 'mad5' means you misspelled 'md5'.
If you're getting an error regarding the expression, it probably means you have a syntax error higher up in your code and the line you're pasting here is just the first one the compiler is able to put an error on.
Upvotes: 1