具体见代码吧        public string RSAFileEn(Stream datastream)
        {
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
            StreamReader sr = new StreamReader("C:\\RSAkey.xml");
            String str = sr.ReadToEnd();
            sr.Close();
            RSA.FromXmlString(str);
            byte[] src = new byte[64];
            Stream fs = datastream;
            Stream res = new MemoryStream();
            
            int len;
            //加密   
            while ((len = fs.Read(src, 0, 64)) > 0)
            {
                byte[] temp = new byte[len];
                Array.Copy(src, 0, temp, 0, len);
                temp = RSA.Encrypt(temp, false);
                res.Write(temp, 0, temp.Length);
            }           long i = res.Length;
            StreamReader myreader = new StreamReader(res);
            string strEn = myreader.ReadToEnd();
            fs.Close();
            res.Close();
            myreader.Close();            return strEn;
        }为什么我读出来的 strEn是空?

解决方案 »

  1.   

    http://blog.csdn.net/llwinnner/archive/2009/03/21/4011936.aspx 
    参考一下吧 ,里边有从文件 读取公钥和私钥的方法
      

  2.   


    public string RSAFileEn(Stream datastream)
            {
                RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
                StreamReader sr = new StreamReader("C:\\RSAkey.xml");
                String str = sr.ReadToEnd();
                sr.Close();
                RSA.FromXmlString(str);
                byte[] src = new byte[64];
                Stream fs = datastream;
                Stream res = new MemoryStream();            int len;
                //加密  
                while ((len = fs.Read(src, 0, 64)) > 0)
                {
                    byte[] temp = new byte[len];
                    Array.Copy(src, 0, temp, 0, len);
                    temp = RSA.Encrypt(temp, false);
                    res.Write(temp, 0, temp.Length);
                }            res.Seek(0, SeekOrigin.Begin); //加上这句......            long i = res.Length;
                StreamReader myreader = new StreamReader(res);
                string strEn = myreader.ReadToEnd();
                fs.Close();
                res.Close();
                myreader.Close();            return strEn;
            } 
      

  3.   

    res.Seek(0, SeekOrigin.Begin); //加上这句......
      

  4.   

    strEn是读剩下的吧,
    res.Seek(0, SeekOrigin.Begin); 起不要回到begin??