Java rsa 公钥,c

场景:rsa加密:C#如何调用java 产生的 rsa 公钥,密钥进行加密

【急】rsa加密:C#怎么调用java 产生的 rsa 公钥,密钥进行加密。
这是公钥:-----BEGIN RSA PUBLIC KEY-----
MEgCQQCh0U1FB617S9gaaI8hsD1o2v88F4vNlK2ggJA6vaRAAFAznxU8atAOSNyscOmtiXqDEymq5wlS0rg30zczONk7AgMBAAE=
-----END RSA PUBLIC KEY-----

这是密钥:-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBAK/12y7RfdtfNx5enNa48sq2ZKE0Gz1huwAOwmPL4+A3Z4+w/KIz
iOdBKOEc8vxURKrNX8TeIImzOpzabyStN/cCAwEAAQJADAzCHcqq28MBe0rvYqT3
u3oSGhf/ZYyzyaU5Gqxzxn7ntBiBRwhjs4bHDHQsVSU71ItWp9DTA7jqh9DaZd0h
gQIhAOAJdRSGs4gGZFuQbJVe8DFxQDGy1VxGrndUBFsbbD/pAiEAyRB9T7hhutY5
vvwVoCnZwIcstlUk5cVN3/3OMcVJrN8CIFYLC85QVY8+dTi9ZRaRGcrDZhYwSsVf
2A24VNvw0khRAiBaidFTv5xKbMLuDEeUqqPCPVxV8ns9+B28GmbqJIOrkwIhAJlG
bEcJpFEZGFTb2fPoqVI8/PH+thjPTtf0bBgYD++C
-----END RSA PRIVATE KEY-----

貌似还不是配对的。但是要求是用这俩串密钥进行加密。求给方法。。。
我知道C# rsa 加密是XML格式。这种格式怎么用啊。求解...
------解决思路----------------------

    public class RSACryption2
    {
        const int MaxLeng =1024;
        /// <summary>
        /// 生成公私钥
        /// </summary>
        /// <param name="PrivateKey"></param>
        /// <param name="PublicKey"></param>
        public void CreateRSAKey(out string PrivateKey, out string PublicKey)
        {
               CspParameters RSAParams = new CspParameters();  
               RSAParams.Flags = CspProviderFlags.UseMachineKeyStore;  
           //System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024, RSAParams);  

               using (RSACryptoServiceProvider provider = new RSACryptoServiceProvider(MaxLeng, RSAParams))
               {

                   PrivateKey = provider.ToXmlString(true);

                   PublicKey = provider.ToXmlString(false);
                   provider.Clear();
               }
           

        }


        /// <summary>
        /// 对原始数据进行MD5加密
        /// </summary>
        /// <param name="m_strSource">待加密数据</param>
        /// <returns>返回机密后的数据</returns>
        public string GetHash(string m_strSource)
        {

            HashAlgorithm algorithm = HashAlgorithm.Create("MD5");

            byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(m_strSource);

            byte[] inArray = algorithm.ComputeHash(bytes);

            return Convert.ToBase64String(inArray);

        }

        /// <summary>
        /// RSA加密
        /// </summary>
        /// <param name="xmlPublicKey">公钥</param>
        /// <param name="m_strEncryptString">MD5加密后的数据</param>
        /// <returns>RSA公钥加密后的数据</returns>
        public string RSAEncrypt(string xmlPublicKey, string m_strEncryptString)
        {

            string str2;

            try
            {
                CspParameters RSAParams = new CspParameters();
                RSAParams.Flags = CspProviderFlags.UseMachineKeyStore;
                using (RSACryptoServiceProvider provider = new RSACryptoServiceProvider(MaxLeng, RSAParams))
                {

                    provider.FromXmlString(xmlPublicKey);

                    byte[] bytes = new UnicodeEncoding().GetBytes(m_strEncryptString);

                    str2 = Convert.ToBase64String(provider.Encrypt(bytes, false));
                    provider.Clear();
                }

            }

            catch (Exception exception)
            {

                throw exception;

            }

            return str2;

        }

        /// <summary>
        /// RSA解密
        /// </summary>
        /// <param name="xmlPrivateKey">私钥</param>
        /// <param name="m_strDecryptString">待解密的数据</param>
        /// <returns>解密后的结果</returns>
        public string RSADecrypt(string xmlPrivateKey, string m_strDecryptString)
        {

            string str2;
            try
            {
                CspParameters RSAParams = new CspParameters();
                RSAParams.Flags = CspProviderFlags.UseMachineKeyStore;
                using (RSACryptoServiceProvider provider = new RSACryptoServiceProvider(MaxLeng, RSAParams))
                {
                    provider.FromXmlString(xmlPrivateKey);
                    byte[] rgb = Convert.FromBase64String(m_strDecryptString);
                    byte[] buffer2 = provider.Decrypt(rgb, false);
                    str2 = new UnicodeEncoding().GetString(buffer2);
                    provider.Clear();
                }

            }
            catch (Exception exception)
            {

                throw exception;

            }

            return str2;

        }

        /// <summary>
        /// 对MD5加密后的密文进行签名
        /// </summary>
        /// <param name="p_strKeyPrivate">私钥</param>
        /// <param name="m_strHashbyteSignature">MD5加密后的密文</param>
        /// <returns></returns>
        public string SignatureFormatter(string p_strKeyPrivate, string m_strHashbyteSignature)
        {

            byte[] rgbHash = Convert.FromBase64String(m_strHashbyteSignature);

            CspParameters RSAParams = new CspParameters();
            RSAParams.Flags = CspProviderFlags.UseMachineKeyStore;
            using (RSACryptoServiceProvider key = new RSACryptoServiceProvider(MaxLeng, RSAParams))
            {

                key.FromXmlString(p_strKeyPrivate);

                RSAPKCS1SignatureFormatter formatter = new RSAPKCS1SignatureFormatter(key);

                formatter.SetHashAlgorithm("MD5");

                byte[] inArray = formatter.CreateSignature(rgbHash);
                key.Clear();
                return Convert.ToBase64String(inArray);
            }

        }

        /// <summary>
        /// 签名验证
        /// </summary>
        /// <param name="p_strKeyPublic">公钥</param>
        /// <param name="p_strHashbyteDeformatter">待验证的用户名</param>
        /// <param name="p_strDeformatterData">注册码</param>
        /// <returns></returns>
        public bool SignatureDeformatter(string p_strKeyPublic, string p_strHashbyteDeformatter, string p_strDeformatterData)
        {

            try
            {

                byte[] rgbHash = Convert.FromBase64String(p_strHashbyteDeformatter);

                RSACryptoServiceProvider key = new RSACryptoServiceProvider();

                key.FromXmlString(p_strKeyPublic);

                RSAPKCS1SignatureDeformatter deformatter = new RSAPKCS1SignatureDeformatter(key);

                deformatter.SetHashAlgorithm("MD5");

                byte[] rgbSignature = Convert.FromBase64String(p_strDeformatterData);

                if (deformatter.VerifySignature(rgbHash, rgbSignature))
                {

                    return true;

                }

                return false;

            }

            catch
            {

                return false;

            }

        }

    }