Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这段代码有没有其他方法可以知道字节数?_C#_Encryption_Rijndaelmanaged_Cryptostream - Fatal编程技术网

C# 这段代码有没有其他方法可以知道字节数?

C# 这段代码有没有其他方法可以知道字节数?,c#,encryption,rijndaelmanaged,cryptostream,C#,Encryption,Rijndaelmanaged,Cryptostream,好的,我有这个解密文件的代码 public static byte[] DecryptFile(string inputFile, string skey) { RijndaelManaged aes = new RijndaelManaged(); byte[] key = ASCIIEncoding.UTF8.GetBytes(skey); using (FileStream fsCrypt = new Fi

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

    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()

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

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


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

等等,我想您可以为该文件创建一个FileInfo对象并使用它的length属性。虽然这可能只是磁盘上的大小。老实说,如果必须是数组形式,我只会制作一个字节列表,并在末尾调用ToArray()。@BenjaminDangerJohnson:不,是密文长度≠ 明文长度。如果我这样做,流“cs”的位置将结束,结果str为null..并且不允许在加密流cs中搜索。。编辑:所以我没有使用BinaryReader..而是将byte[]str设置为MemoryStream()。ToArray..谢谢!等等,我想你可以为这个文件创建一个FileInfo对象,并使用它的length属性。虽然这可能只是磁盘上的大小。老实说,如果必须是数组形式,我只会制作一个字节列表,并在末尾调用ToArray()。@BenjaminDangerJohnson:不,是密文长度≠ 明文长度。如果我这样做,流“cs”的位置将结束,结果str为null..并且不允许在加密流cs中搜索。。编辑:所以我没有使用BinaryReader..而是将byte[]str设置为MemoryStream()。ToArray..谢谢!