組み込みの GenerateKey メソッドを使用してランダムなキーを生成し、それを文字列として返す暗号化ヘルパー クラスを実装しようとしています。私が使用しているオブジェクトは次のとおりです。
DESCryptoServiceProvider
RC2CryptoServiceProvider
Rijndaelマネージド
選択したオブジェクトの GenenrateKey メソッドを呼び出した後、キーを返される文字列に変換しようとします。
私の問題は、これで使用されている機能が見られず、他のさまざまなサイトが私が望むように機能しているように見えることです。たとえば、DES 暗号化オブジェクトに対して次の例を実行するとします。
public String GenerateRandomKey()
{
DESCryptoServiceProvider encryptObject = new DESCryptoServiceProvider();
encryptObject.Padding = PaddingMode.Zeros;
encryptObject.GenerateKey();
string key =
Convert.ToBase64String(encryptObject.Key,0,encryptObject.Key.Length);
return key;
}
返されるキー文字列の例は A01190NXvPI= で、これは 12 文字ですが、DES には 8 文字の文字列を期待していました。他の暗号化方法も同様に、長すぎるキー文字列を返します。
これはエンコーディングの問題だと確信していましたが、すべて試してみましたが、まだうまくいきません。また、キーバイト配列に存在する可能性のあるパディングまたはリターン文字を削除するロジックを追加しようとしましたが、やはりうまくいきませんでした。