此代码知道字节计数的任何替代方法



好的,所以我有这个代码来解密文件

    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以使其工作。像 1000000..不会导致任何异常的最大整数..它确实以这种方式工作。

在解密整个文件之前,您无法知道长度。

因此,您需要从一个小数组开始,并在它变满时使其变大。

MemoryStream类就是这样做的;你可以cs.CopyTo()一个新的MemoryStream并调用ToArray()

相关内容

最新更新