一、下载openssl源码,编译成可调用的库
为了省去大家的麻烦,特提供现成的openssl库给大家:http://pan.baidu.com/s/1hqpbKpA
解压,可以看到include文件夹和libcrypto.a 、libssl.a两个文件。
二、新建项目OpenSSL
将include文件夹拷贝到项目根目录,
将libcrypto.a 和 libssl.a拷贝到项目根目录
在项目中添加以上文件。
最终的项目结构如下:
三、设置“Header Search Paths” 的值为/Users/huangzhiming/Desktop/work/OpenSSL/OpenSSL/include
设置“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){
// 输入参数 1 :要生成 md5 值的字符串, NSString-->uchar*
unsigned char *inStrg = ( unsigned char *)[[string dataUsingEncoding :NSASCIIStringEncoding ] bytes];
// 输入参数 2 :字符串长度
unsignedlonglngth = [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);
}