1、下載openssl源碼,編譯成可調用的庫app
爲了省去你們的麻煩,特提供現成的openssl庫給你們:http://pan.baidu.com/s/1hqpbKpA
函數
解壓,能夠看到include文件夾和libcrypto.a 、libssl.a兩個文件。orm
2、新建項目OpenSSLblog
將include文件夾拷貝到項目根目錄,md5
將libcrypto.a 和 libssl.a拷貝到項目根目錄ssl
在項目中添加以上文件。字符串
最終的項目結構以下:get
3、設置「Header Search Paths」 的值爲/Users/huangzhiming/Desktop/work/OpenSSL/OpenSSL/includeinput
設置「Valid Architectures」 的值爲 armv7/armv7s源碼
4、編寫代碼。
#import <UIKit/UIKit.h>
#import <openssl/md5.h>
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){
// 輸入參數 1 :要生成 md5 值的字符串, NSString-->uchar*
unsigned char *inStrg = ( unsigned char *)[[string dataUsingEncoding :NSASCIIStringEncoding ] bytes];
// 輸入參數 2 :字符串長度
unsigned long lngth = [string length ];
// 輸出參數 3 :要返回的 md5 值, MD5_DIGEST_LENGTH 爲 16bytes , 128 bits
unsigned char result[ MD5_DIGEST_LENGTH ];
// 臨時 NSString 變量,用於把 uchar* 組裝成能夠顯示的字符串: 2 個字符一 byte 的 16 進制數
NSMutableString *outStrg = [ NSMutableString string ];
// 調用 OpenSSL 函數
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);
}
運行,能夠看到輸出以下:
input string:12345
md5:827ccb0eea8a706c4c34a16891f84e7b