2

重複の可能性:
文字列を暗号化し、同じ長さの暗号化文字列を取得するにはどうすればよいですか?

暗号化と復号化は初めてです。私は24文字の長さの文字列を持っています。単語を暗号化および復号化する必要があります。暗号化は安全性が低いかもしれませんが、暗号化された単語は入力文字列と同じ長さ (24 文字) にする必要があります。Web を検索したところ、サンプルの暗号化アルゴリズム ( AES、MD5 ) が見つかりました。しかし、暗号化された単語が入力文字列よりも長すぎます。これはお客様に共有するプロダクト キーであるため、強力な暗号化は必要ありません。サンプルコードを共有していただけると助かります。

4

3 に答える 3

4

バーナム暗号を使用します。真にランダムに生成されたキーを持つ単一の文字列の場合、理論的には解読できません。複数の文字列に同じキーを使用し始めると、セキュリティが大幅に低下しますが、明らかに最高のセキュリティを求めているわけではありません。もしそうなら、暗号化されたパスワードごとに異なるランダムキーを考え出すことができなければなりません.

サンプル コードは Web 上にたくさんありますが、自分で実装することをお勧めします。それはかなり簡単です。

于 2012-08-09T09:08:32.193 に答える
2

あなたが探しているのはFormat-preserving encryption のようですが、.NET にはこれの実装はないと思います (確かに使用したことはありません)。これにはカスタム アルゴリズムを考える必要があるかもしれません。あなたは強力な暗号化は必要ないと言いますが、明らかにアルゴリズムが明らかでないようにする必要があります. 残念ながら、これを行うには文字通り何百もの方法があるため、どれが適しているかによって異なります。

これは、暗号化アルゴリズムの素晴らしい投稿のようです

于 2012-08-09T09:07:55.903 に答える
0

暗号文を平文と同じ長さにするには、ストリーム暗号を使用します。これは、AES-CTR などの CTR モードのブロック暗号、または Rabbit や RC4 などの専用ストリーム暗号のいずれかです。

ストリーム サイファーのキーを再利用できないことに注意してください。そうしないと、攻撃者が暗号化を破ることができる可能性があります。同じキーを使用する 2 つの暗号文を使用して、キーを完全に削除し、2 つの平文だけを残すことができます。

暗号化する 24 バイト ワードが 1 つしかない場合、これは問題ではありません。複数のデータを暗号化する必要がある場合、キー管理が重要になります。

于 2012-08-09T12:06:58.190 に答える