2012-02-22 9 views
0

私は、このMSDNのページに良い例を見ていた:例にhttp://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2.aspxMSDN例:これはバグや最適化(X509Certificate2クラス)です

下にスクロールして半分の方法や方法に見て:

// Decrypt a file using a private key. 
private static void DecryptFile(string inFile, RSACryptoServiceProvider rsaPrivateKey) 

あなたはストリームオフint型の読み取りしようとしている間、一度に3バイトを読んでいる読者がわかります。次の行をtを求めているので

inFs.Seek(0, SeekOrigin.Begin); 
inFs.Read(LenK, 0, 3);// <---- this should be 4 
inFs.Seek(4, SeekOrigin.Begin);// <--- this line masks the bug for smaller ints 
inFs.Read(LenIV, 0, 3); // <---- this should be 4 

をo "4"の位置では、バグがマスクされています。 AES KeyとIVの長さが3バイトに調整されているので、読み込み専用の3つしか読み飛ばすことができないことが分かっているので、したがって、ディスクから1バイト分の読み出しを保存しますか?

最適化すれば....本当に??

答えて

1

私はそれが最適化であることを非常に疑っています。ディスクの読み込みは、4バイトよりかなり大きいチャンクになる傾向があり、キャッシュは、この4つのバイトが2つの異なるディスク「セクタ」(またはディスク読み込みの解像度が)。

このような種類のパラダイムは、(たとえば)わずか3バイトが使用され、そこに他の情報が格納されている場所で見られる傾向があります。

それはここではケースだと言っていますが、基準は、LAは

:-)「消す、拡張、抱擁」言うことにもかかわらず、自分自身の目的のためのフィールドを使用して特定の大企業の歴史を見てみたいことはありません
関連する問題