//我首先通过得到公钥和私钥,将其保存到静态变量publicKey ,privateKey 中 
            RSACryptoServiceProvider rs = new RSACryptoServiceProvider(); 
            publicKey = rs.ToXmlString(false); 
            privateKey = rs.ToXmlString(true);      
  private RSACryptoServiceProvider rsa; 
//这是我的加密算法rsa 
        public string Encrypt(string cardInfo) 
        { 
            try 
            { 
                rsa = new RSACryptoServiceProvider(2048); 
                rsa.FromXmlString(publicKey); 
                Stream ms = new MemoryStream(); 
                MemoryStream ms1 = new MemoryStream(); 
                byte[] dataToEncrypt = ASCIIEncoding.ASCII.GetBytes(cardInfo); 
                ms.Write(dataToEncrypt, 0, dataToEncrypt.Length); 
                byte[] bin = new byte[100]; 
                long rdlen = 0; 
                long totlen = ms.Length; 
                int len; 
                ms.Seek(0, SeekOrigin.Begin); 
                ms1.Seek(0, SeekOrigin.Begin); 
                while (rdlen < totlen) 
                { 
                    len = ms.Read(bin, 0, 100); 
                    byte[] bout = rsa.Encrypt(bin, false); 
                    ms1.Write(bout, 0, bout.Length); 
                    rdlen = rdlen + len; 
                } 
                byte[] rsaBuffer = new byte[ms1.Length]; 
                ms1.Seek(0, SeekOrigin.Begin); 
                ms1.Read(rsaBuffer, 0, rsaBuffer.Length); 
                ms.Close(); 
                ms1.Close(); 
                string rsastr = Convert.ToBase64String(rsaBuffer); 
                return rsastr; 
            } 
            catch (Exception ex) 
            { 
                throw new Exception( ex.Message); 
            }         } //这是解密算法RSA 
        public string Decrypt(string cardInfo) 
        { 
            try 
            { 
                rsa = new RSACryptoServiceProvider(2048); 
                rsa.FromXmlString(privateKey); 
                Stream ms = new MemoryStream(); 
                MemoryStream ms1 = new MemoryStream(); 
                byte[] dataToEncrypt = Convert.FromBase64String(cardInfo); 
                ms.Write(dataToEncrypt, 0, dataToEncrypt.Length);                 byte[] bin = new byte[100]; 
                long rdlen = 0; 
                long totlen = ms.Length; 
                int len; 
                ms.Seek(0, SeekOrigin.Begin); 
                ms1.Seek(0, SeekOrigin.Begin); 
                while (rdlen < totlen) 
                { 
                    len = ms.Read(bin, 0, 100); 
                    byte[] bout = rsa.Decrypt(bin, false); // 不正确的数据。 
                    ms1.Write(bout, 0, bout.Length); 
                    rdlen = rdlen + len; 
                } 
                byte[] rsaBuffer = new byte[ms1.Length]; 
                ms1.Seek(0, SeekOrigin.Begin); 
                ms1.Read(rsaBuffer, 0, rsaBuffer.Length); 
                ms.Close(); 
                ms1.Close(); 
                string rsastr = Convert.ToBase64String(rsaBuffer); 
                return rsastr;             } 
            catch (Exception ex) 
            { 
              throw new Exception( ex.Message); 
            } 
} 我在加密的时候是能成功的~ 
但在解密的时候,就会出现问题了 不正确的数据。 小弟是初学者,希望各位高手帮忙改改~ 
高手支招~ 
谢谢~ 
在线  急等~