密钥文件:公钥public.key,私钥private.key
如何用这个两个文件进行RSA加密和解密,谢谢,麻烦给一下代码。

解决方案 »

  1.   

    using System;
    using System.Security.Cryptography;
    using System.Text;namespace xfqz86Helper
    {
        public static class RSA
        {
            /// <summary>   
            /// RAS加密   
            /// </summary>   
            /// <param name="xmlPublicKey">公钥</param>   
            /// <param name="EncryptString">明文</param>   
            /// <returns>密文</returns>   
            public static string RSAEncrypt(string xmlPublicKey, string EncryptString)
            {
                byte[] PlainTextBArray;
                byte[] CypherTextBArray;
                string Result = String.Empty;
                System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                rsa.FromXmlString(xmlPublicKey);
                int t = (int)(Math.Ceiling((double)EncryptString.Length / (double)50));
                for (int i = 0; i <= t - 1; i++)
                {                PlainTextBArray = (new UnicodeEncoding()).GetBytes(EncryptString.Substring(i * 50, EncryptString.Length - (i * 50) > 50 ? 50 : EncryptString.Length - (i * 50)));
                    CypherTextBArray = rsa.Encrypt(PlainTextBArray, false);
                    Result += Convert.ToBase64String(CypherTextBArray) + "ThisIsSplit";
                }
                return Result;
            }
            /// <summary>   
            /// RAS解密   
            /// </summary>   
            /// <param name="xmlPrivateKey">私钥</param>   
            /// <param name="DecryptString">密文</param>   
            /// <returns>明文</returns>   
            public static string RSADecrypt(string xmlPrivateKey, string DecryptString)
            {
                byte[] PlainTextBArray;
                byte[] DypherTextBArray;
                string Result = String.Empty;
                System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                rsa.FromXmlString(xmlPrivateKey);
                string[] Split = new string[1];
                Split[0] = "ThisIsSplit";
                string[] mis = DecryptString.Split(Split, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < mis.Length; i++)
                {
                    PlainTextBArray = Convert.FromBase64String(mis[i]);
                    DypherTextBArray = rsa.Decrypt(PlainTextBArray, false);
                    Result += (new UnicodeEncoding()).GetString(DypherTextBArray);
                }
                return Result;
            }
            /// <summary>   
            /// 产生公钥和私钥对   
            /// </summary>   
            /// <returns>string[] 0:私钥;1:公钥</returns>   
            public static string[] RSAKey()
            {
                string[] keys = new string[2];
                System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
                keys[0] = rsa.ToXmlString(true);
                keys[1] = rsa.ToXmlString(false);
                return keys;
            }
        }
    }
      

  2.   

    先谢谢,我的公钥和私钥是对方给我的.key文件,要用这两个文件进行加密和解密
      

  3.   


    把你的公钥Key文件内容发上来看看。一般Key文件里面直接是密钥字串。
      

  4.   

    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfoS5mMkl6oyT1CKaEaNVSmJTg
    s1AOjOvGJ7P3Qnje3/hsWI3ROX0imxuzng82rpRthnyQwAbAAu3DXj2xPyxz1Dmv
    t7nYM+gQX+YY+cVMvBAodDdFSZwwnTFbGBazvXIHaakFKZHYUWdUuYbYpbZKbqrt
    /uscOoKPChsLFOlNkQIDAQAB
      

  5.   

    上面就是key文件里的公钥,怎么用它来加密和解密呢?一楼的xmlPublicKey是不是需要XML类型的?
      

  6.   

    啊哦 微软有例子的 自己去msdn上看吧
    http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.aspxhttp://blog.csdn.net/heqichanggg/article/details/4043243
      

  7.   

    例子里的key是随机生成的吧?我已经有key了
      

  8.   

    MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANv7UD/dRjuYTy4IZSSYvso3AEoDwrYCVI7/m+S9n2yaUGgjj8nW1yMHo5q72bj5ZKam/a08CXFkAdRD3yaWzZ+JAHRoLnyEiD9SYkpbfu7nqnWNI44MNhqa6sl4MkSjCL0MZLbn8zHzfr81G2Seamtr9dshHqb6cvD7EeYhQvNHAgMBAAECgYAK9nE/XYWcfrCjeKOhuUL4zNjk118itucD4VUhhxmkzePn7K3Dv0MlacILegUVpMgRTg0iTvWhgvxcWa2LPMSucPNp+chV2oDuGakkIQnXU+/qfL1h/tkHZ4i0ivkaSl+WrIfejOaFSc9LnNE0XOBH2LtYYGfLVzVcVubssn/dsQJBAPqJ/bFA+/StUajJyerYRxv3I7gdQMb3MXC2igrYB97BVRJKZ33TBfLvtiQ9yjS3PquomGHdGi9wMY6phht/G4MCQQDgxs/6UCMQL4j40oWZaaT9xK//XJ9l7f/aFnTAx7feoA3TpwCAJVSUL+xeZq55AzM9GKgx1s/PgIKT0FfCT6ntAkEA85XSJ9IMpVkVecunG0Nn75KbEdivMEMJuJJhKCXdkP/bHEtmz3ip4gaZyiahQBuhPPhQH2X+nXyxUgkUMAumzQJAd5+XA8IuRujlXna7fx/IHP3WJHLoqdh1t10IGaiwZByN/zv7ejdjwdGXW84NwH1BgZxjttJ5mhbsZzoT2meHKQJAINuA1sG9hmhORW7Pc1Ce0jkx+gBTQyxFqLNWqQD+UzOP86Y9Jd+Ot8BAGnf0WfrRT1a426g+9NyHn8d9cY4ofQ==用这个加密的时候,提示 无效的密钥集参数,怎么解决呢
      

  9.   

    详细参考
    http://blog.csdn.net/llwinnner/article/details/4011936