0
好了,所以我有這樣的代碼解密文件此代碼的任何替代方法都知道字節數?
public static byte[] DecryptFile(string inputFile, string skey)
{
RijndaelManaged aes = new RijndaelManaged();
byte[] key = ASCIIEncoding.UTF8.GetBytes(skey);
using (FileStream fsCrypt = new FileStream(inputFile, FileMode.Open))
{
using (CryptoStream cs =
new CryptoStream(fsCrypt, aes.CreateDecryptor(key, key),
CryptoStreamMode.Read))
{
using (BinaryReader reader = new BinaryReader(cs))
{
byte[] str = reader.ReadBytes(Convert.ToInt32(cs.Length));
reader.Close();
cs.Close();
return (str);
}
}
}
}
}
現在我有了出了問題,我也不能確定字節長度!我試圖
cs.Length
,但它說,流不支持查找(類似THT) 我也試圖通過
File.ReadAllBytes(encrypted_file_path).Length
計算文件的字節,但它說,該文件是在使用中...它確實在使用,因爲FileStream fsCrypt
其間我用cs.Length
代替了一些大的整數t o使它工作。像1000000 ..最大的整數不會導致任何異常..它的工作方式。
等等,我以爲你可以爲該文件創建一個FileInfo對象並使用它的長度屬性。儘管這可能只是磁盤上的大小。老實說,我只是做一個字節列表,並在末尾調用ToArray(),如果它必須以數組形式。 –
@BenjaminDangerJohnson:沒有密文長度≠明文長度。 – SLaks
以及如果我這樣做流「CS」的位置會去到另一端,導致STR是null..and這是不允許的CryptoStream CS尋求.. 編輯:所以不是我沒有使用BinaryReader..and只需將byte [] str設置爲MemoryStream()。ToArray ..謝謝! –