私のアプリケーションでは、銀行の詳細とクレジット カード番号をデータベースに保存する必要があります。いくつかの DB バリアントをサポートしており、別の DB バリアントに簡単に移植できない可能性のある DB 固有の機能を可能な限り回避しようとしています。
したがって、カード番号や銀行口座番号などの特定のフィールドを暗号化する、シンプルでありながら適度に安全な方法を探しています。アプリケーションは、外部の支払いシステムにリクエストを送信するためにこれらを必要としますが、関連する DB テーブルのカジュアルな選択 * は「ジャンク」を返す必要があるため、誰かが数千のクレジット カード番号を持ち出すことはできません。
暗号化システムを知る必要があるのはアプリケーションだけです。この情報は、(この) 暗号化された形式で他のシステムに送信される必要はありません。
これを行うためのシンプルで安全な方法について何か提案はありますか?
有用で包括的に見える次の質問/回答を見つけましたが、これらすべてのフィールドが必要かどうかを判断するのに苦労していました。
また、レコードが挿入/更新され、暗号化された値と一緒に保存されるたびに、IV がランダムに生成される必要があることを暗示していると思われるこの記事も見つけました。安全であれば、SOの質問で提案されているアプローチよりも簡単に思えますが、これをJava APIと調整するのに苦労しています。
任意の提案をいただければ幸いです。(私は Java 6 を使用しています)