WindowsやAndroidは暗号ライブラリが豊富にあるので困らないのですが、iOSのSwiftだと暗号ライブラリが少なくとても大変です。有志が様々なライブラリを作ってはいるのですが、例えば3DESだと対応しているライブラリは皆無です。結局iOSに標準で入っているCommonCryptoというC言語のライブラリを使うのが最も安全という話になります。今回はCommonCryptoをSwiftで使うのに苦労したので、その使用方法を書き残しておきます。
CommonCryptoをSwiftで使う方法
ググると様々な方法が出てくるのですが、Xcode9では失敗しました。結論から言うと、まずアプリディレクトリ(TestAppというアプリならTestAppディレクトリ)の中にCommonCryptoというディレクトリを作成します。そしてその中にmodule.mapというファイルを作って、中に下記のように書いておきます。
module CommonCrypto { header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/CommonCrypto/CommonCrypto.h" export * }
どうもこのheaderで指定する場所がXcodeのバージョンによって違うみたい?そんな勝手に変えられたら分からないですよねえ…。だからググっても動かないわけです。ちなみにXcode10ではどうなってるか調べてないです。すみません。
CommonCryptoをSwiftから呼び出す方法
あとはimportすれば呼び出せるはずです。
import CommonCrypto
辛いですねえ。