509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
            store.Open(OpenFlags.ReadOnly);
            X509Certificate2Collection storecollection = (X509Certificate2Collection)store.Certificates;
            X509Certificate2 mySert = null;
            foreach (X509Certificate2 x509 in storecollection)
            {
                //取出指定的证书
if (x509.Subject.Equals("CN=testkey, C=CN"))
                {
                    mySert = x509;
                }
            }
            if (mySert != null)
            {
               
                try
                {
                    String sourceText = "测试一下!";
                    Byte[] sourceBytes = Encoding.UTF8.GetBytes(sourceText);
                    RSACryptoServiceProvider myRSACryptoServiceProvider = (RSACryptoServiceProvider)mySert.PublicKey.Key;
                    Byte[] targetBytes = myRSACryptoServiceProvider.Encrypt(sourceBytes, false);                    //这个地方就出错了,应该是不能直接取密钥
    RSACryptoServiceProvider myRSACryptoServiceProvider2 = (RSACryptoServiceProvider)mySert.PrivateKey;
                   
                    byte[] sourceBytes2 = myRSACryptoServiceProvider2.Decrypt(targetBytes, false);                    string targetText = Encoding.UTF8.GetString(sourceBytes2);
                    Console.WriteLine("解密:" + targetText);

                } catch (Exception ex) {
                    Console.WriteLine(ex.Message);
                }
            }
            到解密的时候不知道该怎么做了,网上找了都是用key的密码的方法,应该可以直接用密钥解密的,有谁知道吗?证书里包含公钥和密钥了