这里是openssl编译好的库,可以在iOS设备以及MacBook上使用:http://pan.baidu.com/s/1mgkjGs4
如果感兴趣的话可以自行编译openssl的源码,记得编译成arm使用的文件就行.
在xcode中导入
直接将文件拖入xcode目录中即可,如图:
然后,我们如果是swift,我们需要引入一个桥梁,操作如下:
1,File->New->File
2,新建一个C
3,输入名字
4,选择目录
5,最关键的,创建一个桥梁文件
6,创建成功,注意最后那个test-Bridging-Header.h
然后,我们把openssl拖进来
在.h头文件里加上这样两句话:
1 2
| void rsajiami(const unsigned char* in,int size,unsigned char* out); void rsajiemi(const unsigned char* in,unsigned char* out);
|
就像这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
#ifndef __test__testc__ #define __test__testc__
#include <stdio.h>
void rsajiami(const unsigned char* in,int size,unsigned char* out); void rsajiemi(const unsigned char* in,unsigned char* out);
#endif
|
然后在.c文件里引入rsa,注意这里的公钥改成自己的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#include "testc.h" #include "openssl/rsa.h" #include "openssl/bn.h"
static char n[] = "EA32BA96FCC395CC766EAFFEBC8EFE1F0886E99504CB7C3877548698793446BA7BA07CF915DBB5BE69337A3697B4DC354DA78ABAE17ED33EDAD87674D0D0D2B54D549E566AF0C016C276F327ADC3D4EE06E64EBC608E4AC9E3CE63416C246FD57DBEA8ADA036AA683F9A812CD8ECA705E019D6A943121CDDB2CF9BF1BCD0F5F9"; static char e[] = "10001";
void rsajiami(const unsigned char* in,int size,unsigned char* out){ RSA *a = RSA_new(); BIGNUM *bn = BN_new();BN_hex2bn(&bn, n); BIGNUM *be = BN_new();BN_hex2bn(&be, e); a->e=be;a->n=bn; RSA_public_encrypt(size, in, out, a, RSA_PKCS1_PADDING); }
void rsajiemi(const unsigned char* in,unsigned char* out){ RSA *a = RSA_new(); BIGNUM *bn = BN_new(); BN_hex2bn(&bn, n); BIGNUM *be = BN_new(); BN_hex2bn(&be, e); a->e=be;a->n=bn; RSA_public_decrypt(128, in, out, a, RSA_PKCS1_PADDING); }
|
然后我们就可以在swift中调用C里面的rsajiami函数:
1 2 3 4 5
| func jiami(buf:[Byte])->[Byte]{ var re:[UInt8] = [UInt8](count:128,repeatedValue:0x0) rsajiami(buf,CInt(countElements(buf)),&re) return re }
|
同样的也可以调用解密函数:
1 2
| remain = [UInt8](count:20,repeatedValue:0x0) rsajiemi(re,&remain)
|