0

C#.NET で、以前に DES アルゴリズムで暗号化されたデータを解読したいのですが、キーだけはありますが、IV はありません! ストリームから読み取るときに例外が発生します。何を書けばいいですか?ここに私のコードがあります:

byte[] byaText = new byte[] { 0x91, 0x6e , 0x6e , 0x75, 0x76 , 0xa5 , 0x73 , 0x55 };
byte[] byaKey = new byte[] { 0x9B, 0x43, 0xBF, 0x66, 0x98, 0xDE, 0x67, 0xFB };
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
cryptoProvider.Mode = CipherMode.ECB; // even when remarking this line exception occures
MemoryStream memoryStream = new MemoryStream(byaRes);
ICryptoTransform ict = cryptoProvider.CreateDecryptor(byaKey, byaKey); // even "new byte[] {0,0,0,0,0,0,0,0}" as IV, exception occures
CryptoStream cryptoStream = new CryptoStream(memoryStream,
    ict, CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cryptoStream);
string decrypted = reader.ReadToEnd(); // here the exception 'Bad Data' occures
4

1 に答える 1

0

パディング例外が発生する可能性があります。送信者が使用しているパディング (おそらく PKCS5) を確認し、復号化関数が同じパディングを想定していることを確認してください。

ECB モードはセキュアではありません。可能であれば、CTR モードの CBC モードに変更します。ウィキペディアには、ECB モードが安全でない理由の (文字通りの) 良い例があります:電子コードブック (ECB)

于 2011-10-10T16:58:32.230 に答える