Laravelには暗号化する機能があります。
先日、API連携時に以下のようなエラーが出ました。
ERROR: The MAC is invalid. {"exception":"[object] (Illuminate\\Contracts\\Encryption\\DecryptException(code: 0): The MAC is invalid. at
やろうとしていたこととしては2つの異なるLaravelで、アプリケーションAがアプリケーションBのAPIを叩いた時に認証情報を暗号化して送ろうとしました。
ただその場合、エラーとなります。
原因
結論、.envのAPP_KEYが異なるから!
どうやら暗号化にはAPP_KEYが関与しているようです。
Crypt::encryptStringで暗号化して、そのLaravel環境とは異なるAPP_KEYのアプリケーションで復号化(Crypt::decryptString)しようとすると上記のエラーになります。
逆に、APP_KEYが同一であれば異なるLaravel環境でも復号することができます。
解決手段
上機能ようにAPI連携の認証に利用する場合は、連携先のアプリケーションで暗号化し、その文字列を送信元のアプリケーションから送ってあげると復号することができます。