在上面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文件,實際上使用的時候可以將倆倆合併,形成可用於多種狀態下的通用靜態庫