0

この質問は以前にも何度も聞かれたことは知っていますが、私の状況は特殊だと思います。すでに多くの人が IRC から私を助けようとしてきましたが、まだ解決策がありません。基本的に、PHPスクリプトで.NET CSプログラムhttp://codepad.org/4SmP1Oekの暗号化機能と一致させようとしています。これまでのところ、 http://codepad.viper-7.com/JsYFPKを思いつきました。

パディングを追加しない(デフォルトのままにする)など、さまざまなパディングオプションを試しましたが、C#出力と一致しない異なる値を取得するたびに。

例えば、

csharp: gLbzWiVmpmDrmzfZgRaM9w==

php: vid7cv20FZ68tbkNLHv3RQ==

php with no padding added: Z+ELd8MNs2frjTBUiWYj5w==

csharp クラスでわかるように、暗号化の値はデフォルトのままであり、32 バイトのキー、16 バイトの iv、および 16 バイトの入力を持つ CBC であると確信しています。

更新: C# プログラムを再作成し、同じ出力を正常に取得したので、キーを php の複数の異なる文字列に変更し、cs を 16 および 32 バイトに変更しようとしましたが、運が悪く、同じ問題が発生しました。コードは上でリンクしたものと同じで、テキストは最初に変更せずに Encrypt 関数に送信されるため、パディングの問題であると疑い始めています。

更新#2:私は問題を理解しました.csharpプログラムが9バイトのキーを使用しているため、ISであることが判明しました. cs と php の両方で 16 バイトまでは問題なく動作します。

4

1 に答える 1

0

私は問題を発見しました(解決策ではありません).netでは、CreateEncryptorを使用すると短いキーが奇妙な方法で展開され、この問題が発生するようです。

于 2013-10-17T22:08:39.893 に答える