0

JavaScriptで文字列を暗号化してから、c#を使用してサーバーで復号化しようとしています。サーバー側でSystem.Security.Cryptography.Rijndaelを使用し、クライアント側でこのようなAES実装を使用することを考えました。

暗号化についてはよくわからないので、基本的にはキーを生成してクライアントに送信し、そのキーでテキストを暗号化してサーバーに送り返します。

私の問題は、Javascript AES実装がキーを使用してテキストを暗号化するのに対し、c#Rijndaelクラスはキーとベクトルを使用することです。そのベクトルはどこから来たのですか?

4

2 に答える 2

2

AES は単なるブロック暗号であり、暗号プリミティブです。その目的は、1 つのデータ ブロック (16 バイト) を暗号化することです。

暗号化にはそれ以上のものが必要です。任意の量のデータを暗号化する方法が必要であり、できれば情報を漏らさない方法が必要です。これを行うには、データ量をブロックに分割し、最後の部分を完全なブロックにパディングしてから、巧妙な方法で各ブロックを暗号化する必要があります。それを行うのは、暗号化モードの責任です。

最も単純なモード (電子クックブック、ECB) では、各ブロックを同じキーで暗号化するだけですが、これは非常に危険です。他のモードでは、ある種の初期化状態が必要です。これはランダムである必要がありますが、公に知られている可能性があります。

データを暗号化および復号化するには、両側でブロック暗号暗号化モードの両方を知っている必要があり、暗号化側で初期状態を生成し、復号化側でそれを復元してエンコーダーを初期化する方法を見つける必要があります。とデコーダ、それぞれ。

一言で言えば、あなたがしていることについてもっと多くの情報が必要です!

于 2012-09-14T12:42:41.697 に答える
0

これはおそらくあなたが探しているものではありません。しかし、実際に必要なのは SSL を実装することだと思います。

http://en.wikipedia.org/wiki/Secure_Sockets_Layer

これにより、暗号化のコーディングに関与しなくても問題が解決する場合があります。

于 2012-09-19T12:17:43.373 に答える