1

パスワードを入力して暗号化し、データベースにロードできるようにしたいPHP駆動のWebフォームがあります。次に、Python を使用してそのパスワードを照会し、復号化してから、それを使用して SMTPLIB を使用して Microsoft Exchange 電子メール サーバーに対して認証します。残りの認証情報は平文で保存されます。私の主な目標は、パスワードをプレーンテキストで保存しないことです。

私が両方の言語を使用しようとしている唯一の理由は、プログラムの残りの「作業」が Python で行われているからです。私は単純なインターフェースにのみ PHP を使用しています。一貫性のためだけです。

これに使用できる、使いやすい言語間で可逆的な暗号化ライブラリはありますか?

メール スクリプトを PHP で作成したほうがよいでしょうか。この場合、このタスクにはどのライブラリが推奨されますか?

4

2 に答える 2

0

AES 対称暗号化:

于 2013-08-19T15:50:11.730 に答える
0

パスワードを読み返す必要がある場合は、アプリケーション層ではなくデータベース層で暗号化を行ってください。ローカルまたは SSL 経由でデータベースに接続していることを確認してください。

パスワードを保存するには、手順は次のようになります。

  • パソコン >>
  • HTTPS >>
  • Webサーバー(PHPフォーム) >>
  • (別のサーバーの場合は HTTPS >>)
  • データベース (AES 暗号化)

使用しているデータベースによって構文が変わる可能性がありますが、MySQL では次のようなことができます。

INSERT INTO `table` (`password`) 
VALUES (AES_ENCRYPT('{$sPassword}', '{$sEncryptionKey}'))

PHP はこれをデータベースに書き込んでいるので、PDO 準備済みステートメントを使用してそこにデータを取得できます...

Python スクリプトでパスワードを取得するには、次のような (データが AES 暗号化された BLOB にあると仮定して) SQL サーバーで SELECT ステートメントを実行するだけです。

SELECT CONVERT(AES_DECRYPT(`table`.`password`, '{$sEncryptionKey}') USING 'utf8')
AS `password`

このように、PHP と Python の間で必要な唯一の共通データは、暗号化キー (単なる文字列) です。このデータをインターネット経由で渡すときはいつでも SSL 接続を維持している限り、問題はありません。

于 2013-08-19T15:52:40.857 に答える