一期犬、下載openssl源碼僚匆,編譯成可調(diào)用的庫
為了省去大家的麻煩,特提供現(xiàn)成的openssl庫給大家:http://pan.baidu.com/s/1hqpbKpA
解壓喊递,可以看到include文件夾和libcrypto.a 疤剑、libssl.a兩個(gè)文件滑绒。
二闷堡、新建項(xiàng)目OpenSSL
將include文件夾拷貝到項(xiàng)目根目錄隘膘,
將libcrypto.a 和 libssl.a拷貝到項(xiàng)目根目錄
在項(xiàng)目中添加以上文件。
最終的項(xiàng)目結(jié)構(gòu)如下:
三杠览、設(shè)置“Header Search Paths” 的值為/Users/huangzhiming/Desktop/work/OpenSSL/OpenSSL/include
設(shè)置“Valid Architectures” 的值為 armv7/armv7s
四弯菊、編寫代碼。
#import?
#import
void?Md5(?NSString?*);
int?main(?int?argc,?char?*argv[]) {
NSAutoreleasePool?* pool = [[?NSAutoreleasePool?alloc?]?init?];
Md5?(?@"12345"?);
int?retVal =?UIApplicationMain?(argc, argv,?nil?,?nil?);
[pool?release?];
return?retVal;
}
void?Md5(?NSString?* string){
//?輸入?yún)?shù)?1?:要生成?md5?值的字符串踱阿,?NSString-->uchar*
unsigned?char?*inStrg = (?unsigned?char?*)[[string?dataUsingEncoding?:NSASCIIStringEncoding?] bytes];
//?輸入?yún)?shù)?2?:字符串長度
unsignedlonglngth = [string?length?];
//?輸出參數(shù)?3?:要返回的?md5?值管钳,?MD5_DIGEST_LENGTH?為?16bytes?,?128 bits
unsigned?char?result[?MD5_DIGEST_LENGTH?];
//?臨時(shí)?NSString?變量软舌,用于把?uchar*?組裝成可以顯示的字符串:?2?個(gè)字符一?byte?的?16?進(jìn)制數(shù)
NSMutableString?*outStrg = [?NSMutableString?string?];
//?調(diào)用?OpenSSL函數(shù)
MD5?(inStrg, lngth, result);
unsigned?int?i;
for?(i = 0; i <?MD5_DIGEST_LENGTH?; i++)
{
[outStrg?appendFormat?:?@"%02x"?, result[i]];
}
NSLog?(?@"input string:%@"?,string);
NSLog?(?@"md5:%@"?,outStrg);
}