【Swift】Laravel API 連携での暗号化と復号

アプリを作る際にLaravelをAPIサーバーとして使っている方なら一度は暗号化について考えた事があると思います。

  1. サーバー側で暗号化した値をアプリ側で復号したい
  2. アプリ側で暗号化した値をサーバー側で復号したい

今回は上記問題を解決するための方法を紹介します。

はじめに

Laravelで暗号化・復号できる文字列を生成するのが目的です。
Laravelの導入は公式サイトに譲ります。

参考にしたライブラリ

AES-CBCの暗号化にはCryptoSwiftを使わせていただきました。
暗号化手順はLaraCryptを参考にしました。

Cryptoクラスのソース

暗号化・復号手順は省かせていただきます。
Laravelでは平文を単純に暗号化しているわけではなく、JSON形式に変換して改竄チェックも含まれています。
そこを考慮して出来上がったソースは以下です。
“enter your app key”の部分は環境に合わせて変更してください。
(.envのAPP_KEYの値から”base64:”を除いた値です。)
コピペで使える、と思います。。。

躓いたポイント

stringSerializerとstringDeserializer内の処理がLaravelのバージョンによって異なる点です。
Laravelのバージョンが5.4系以前では上記メソッド内のコメントにしてある処理が必要になる可能性があります。動作確認はしていないので適宜修正してお使いください。

使い方

Laravel側はシリアライズしない暗号化方法のみ使用できます。

Swift側は各関数を呼び出すだけです。

Laravel側で暗号化した文字列をSwift側のdecryptoメソッドで復号できます。逆も然りです。

最後に

いかがでしたでしょうか?
Laravel APIとの連携で暗号化文字列を使用できるようになりました。
結構めんどくさいですよね〜
快適な開発ライフが送れますように。

【動作確認環境】
Swift 4
Laravel 5.5.*

コメントを残す