POSTメソッドを使用してアプリケーションから送信されたキーを使用して文字列を暗号化しようとしています.POSTメソッドは暗号化のためにキーを送信します.しかし、スクリプトが正しく機能していません.助けてください.
1 に答える
それが機能しない理由は、パディングが間違っているためです。PKCS7 は、繰り返されるパディング長のバイト値です (つまり、パディングが 2 バイトの場合は 00000010 00000010)。これは文字列値「0202」ではありません。これを正しく行う PHP 関数はないようです。そのため、パディングを必要としない操作モードを使用することをお勧めします。OFB は、c# と php の両方でサポートされています。
固定 IV は使用できません。cbc モードの場合はかなり安全ではなく、OFB の場合は完全に安全ではありません。mcrypt_create_ivを使用して、毎回新しいランダムなものを取得します。次に、送信時に IV を暗号文の先頭に追加します (暗号化する必要はありません)。注意として、すでにヒットしている可能性のある問題の 1 つは、PHP が文字列を使用し、C# が IV にバイトを使用しているため、現在でも正しい変換が得られない可能性があることです。私はおそらく16進数と関数を使用して、それとの間で変換します。
第二に、人々がデータを改ざんしたことを検出するために何かを使用する必要があります。そうしないと、基になる暗号ライブラリのエラー コード/タイミングの問題を介して暗号テキストを読み取る可能性があります。Hmacs はうまく機能し、ここでは php で、ここでは c# でサポートされています。IV + 暗号文メッセージを HMAC し、出力を先頭に追加します。もう一方の端では、同じデータに対して c# の同等の関数を実行し、HMAC 値を比較します。それらが同じであれば安全であり、そうでない場合は拒否します。