2012-04-15 13 views
1

POSTメソッドを使用してアプリケーションから送信されたキーを使用して文字列を暗号化しようとしています。POSTメソッドが暗号化キーを送信します。私を助けてください。POSTメソッドからのデータによるPHP暗号化と復号化C#

+2

「正しく機能しない」とはどういう意味ですか?エラーが出ますか?結果は間違っていますか? *どのように結果が間違っていますか? – deceze

+0

@cillosis Edit – techno

+0

@decezeを参照してください。 – techno

答えて

1

あなたの詰め物が間違っているという理由で機能しないのです。 PKCS7は繰り返されるパッド長のバイト値です(つまり、パディング2バイトの場合は00000010 00000010)。それは文字列値 "0202"ではありません。これは正しくこれを行うPHP関数がないようですので、パディングを必要としない操作モードを使用することをお勧めします。 OFBはc#とphpの両方でサポートされています。

固定IVを使用することはできません。 cbcモードでは、OFBにとっては全く安全ではありません。毎回新しい乱数を取得するにはmcrypt_create_ivを使用してください。次に、暗号文を送るときにIVを暗号文の前に付加するだけです(暗号化する必要はありません)。メモとして、既にヒットしているかもしれない1つの問題は、phpが文字列を使用し、C#がIVにbytsを使用していて、今でも正しい変換が得られていない可能性があるということです。私はおそらく16進数と関数を使用して/から隠すことを確信しています。

第2に、人がデータを改ざんしたときを検出するために何かを使用する必要があります。そうしないと、潜在的な暗号ライブラリのエラーコード/タイミングの問題によって暗号テキストが読み取られる可能性があります。 Hmacsはうまく動作し、here(php)とc#(here)をサポートしています。あなたのIV +暗号文メッセージをHMACし、出力をその前に付加します。もう一方では、同じデータに対してC#同等の関数を実行し、HMACの値を比較します。それらが同じであれば、あなたは安全ではなくても、拒否します。

+0

ありがとうございます。暗号化またはPHPのエキスパートではありません。私に例を挙げてください。 – techno

+0

データを暗号化しようとしているだけなら送信するときは、HTTPS/TLSを使用します。はるかに簡単で安全でなければなりません。 – imichaelmiers

+0

いいえこれはできません。 – techno