在上面RSA加密(2.0)中我们讲到了第一种RSA加密方式,但是这种加密方式适用范围比较窄,对加密的数据有长度限制,下面我们讲一下第二种RSA加密方式
第二种需要openssl静态库,所以我们首要做的事情就是制作静态库
分别需要生成适用于armv7,armv7s,arm64和i386情况的静态库,并且合并各个静态库,才能适用于各种机型(包括模拟器)
1.去https://openssl.org/source/下载相应的库
2.解压库文件,我的库文件未解压之前叫openssl-1.0.2d.tar,加压完为openssl-1.0.2d
3.根据路径./openssl-1.0.2d/crypto/ui/找到ui_openssl.c文件。
将static volatile sig_atomic_t intr_signal;
改为static volatile int intr_signal;
4.在openssl-1.0.2d文件下面创建armv7,并在终端执行
./configure BSD-generic32 --openssldir=../openssl-1.0.2d/armv7(PS:在执行以上语句的时候,先要转到openssl-1.0.2d路径下)
其中“=”后面为armv7文件的路径,根据个人情况设置,并回车
5.openssl-1.0.2d下找到Makefile
找到CC= gcc
并且将gcc改为/Applications/Xcode.app/Contents/Developer/usr/bin/gcc -arch armv7
其中/Applications/Xcode.app/Contents/Developer/usr/bin/gcc为gcc的路径。如果在/Applications/Xcode.app/Contents/Developer/usr/bin/能找到gcc,则你可以这样设置,如果不是,请根据个人情况设置
在下面一行中
CFlag= 后面添加-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/
即CFlag= -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/
其中 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/下能找到iPhoneOS9.0.sdk,则说明可以这样添加,如果不是,请根据个人情况设置
6保存以上文件,并且在终端上执行make
如果有错误
clang: warning: argument unused during compilation: '-pthread'
making all in tools...
make[1]: Nothing to be done for `all'.
可以忽略
7.执行make install,则可以在armv7文件中找到lib中找到俩个.a文件,在armv7中还可以找到include文件,以上所说的文件则可以保存起来,即是有用的文件
以上所说是armv7格式的静态库文件,arm64,armv7s格式的静态库生成可重复3~7步,同时将所有的armv7替换为arm64或者armv7s。但是每次生成静态库都最好用最新解压的openssl-1.0.2d,避免造成不必要的错误
关于i386与x86_64静态库的生成与上面所说的基本一致,但除了注意替换armv7之外,CFlag=后面内容替换为-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/
8.合并静态库
以上所说最后应该会生成多个libssl.a和libcrypto.a文件,实际上使用的时候可以将俩俩合并,形成可用于多种状态下的通用静态库