私のecommeceサイトでは、クレジットカード番号の一部を文字列として保存したいので、データベースに保存する情報を暗号化し、ユーザーが以前に購入したクレジットカード情報をすべて入力せずに再利用したい場合は復号化する必要がありますまた。
私はDjangoを使用しているので、Pythonを介してこれを解決する必要があります。この問題を解決するための賢いアルゴリズムは何でしょうか?
私のecommeceサイトでは、クレジットカード番号の一部を文字列として保存したいので、データベースに保存する情報を暗号化し、ユーザーが以前に購入したクレジットカード情報をすべて入力せずに再利用したい場合は復号化する必要がありますまた。
私はDjangoを使用しているので、Pythonを介してこれを解決する必要があります。この問題を解決するための賢いアルゴリズムは何でしょうか?
さらに先に進む前に、PCI-DSSを確認する必要があります。これは、暗号化されたカード番号の保存を検討するために必要なプロセスを正確に管理します. つまり、サードパーティの支払いゲートウェイへのアウトソーシングを真剣に検討する必要があります。
結果を理解したら、先に進みたい場合は、PCI ガイドラインに従ってください。カード番号の対称暗号化には、おそらくAESを使用し、非常に厳密な鍵管理ポリシーを作成することをお勧めします。
ただし、部分的なカード番号のみを保存したい場合、PCI は、最初の 6 桁と最後の 4 桁のみを (絶対最大で) 保存できると述べています。カードの種類を識別するために必要なのは、最初の 6 桁だけです。顧客がほぼ同一のカード番号を持っている場合の問題を防ぐために必要と思われる最後の 4 桁。
IMHO で部分的なカード番号を (平文で) 保存し、暗号化、承認、および決済の処理をサードパーティのゲートウェイにアウトソーシングします。支払いゲートウェイは、渡したカードごとに一意のトークン ID を提供するため、一意のカードを参照して再承認や払い戻しなどを実行できます。
このような機密情報をハッシュすることを絶対に確信していますか? この記事を読んで、機密情報をデータベースに保存しようとする際の落とし穴について理解することをお勧めします。あなたの場合、変換を可逆にしたいので、さらに悪いです。あなたがそれを元に戻すことができれば、攻撃者も元に戻すことができることを覚えておいてください.
このコースに着手する前に、よく考えてください...
おそらく、この種の作業を専門とする人 ( PaypalやGoogle Checkoutなど)にアウトソーシングしたほうがよいかもしれません。