我在這個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)
你會發現讀者在時間只讀取3個字節,而它正試圖讀取一個int的料流:
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密鑰和IV的長度將足夠小以容納3字節,所以只讀3,然後跳過到4,從而節省讀取1個字節的磁盤?
如果優化....真的嗎?