iOS8.1 下使用OpenSSL

一、下载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 <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

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。