c# Rsa decrypt and encrypt

1. 将privatekey.pem 变为XML 字符串

public string RSAPrivateKeyXML() {
            RsaPrivateCrtKeyParameters privateKeyParam = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(Convert.FromBase64String(@"
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALf9/Xe/P260jhOO
ebhxMcJn6EIfq4455zi+NgghqXOBVvMjOoLA9kl9BFLC3wO2Pex7E8FFm1V1CpTk
BhY7t9J7qAZ22BvFdWQb+tQ3Wu38evahf20Z3FDPggrqi5S+lYO3jaqXvivQ3heM
kGcAYrNcSxD6CHJ7R64P5FCxqVMjAgMBAAECgYEAhHBZMQcC2+cvlbgqua8RCETP
FDnDvV7Epz2TmwrP9IqXUfB7v36ySXep0wDeksdtj3mQYMB/7WWQNlhkYUCfMbLS
KU77qk8f4MOgK0v1s4U+WtCf4ru0zFW6mXbklOFql04gCAOWEoyOr5++bFdmqkSb
KXem7Dr/NoQ9DferxvECQQDy07eeRbIBEWmmB5fKQqLQOijBuKyyMdzzJdtSfgex
odfv3ZDJrLR1eEHLOmiuCV6akLPXgMW4RZleQgyM6deNAkEAwfkyt/DzTvdYz/am
XafovOiN+YGNtfRHBbpzz4C9Xr8HJracsxB9Gx32aS8dsGY81DFZgWMLjlxy/dPK
D2aRbwJAeJbPnxf5eDJPhxZKOTWyaToYt2ugx7WfhliMfID+DSbUd9hOaPkNfTDF
a8mL5rHce2HVDfZzOjnGGlsupGQUmQJAFtux8WEwmu6lBaTQSBsgXxqcmHl+5KFL
uU4Wla5bIo4qXpKIdsWLqKVoQ07tFbuGkY7bOFcepoEYf/b0ScpRewJBANXblpaj
xNtFy6jYSTpeklribCngbRvoPCcdLTIuTVr5EfiYdl4y81TO+bOFG7TBLMCnNNKW
H85vMckSKgbs1vk="));
            return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>",
                     Convert.ToBase64String(privateKeyParam.Modulus.ToByteArrayUnsigned()),
                     Convert.ToBase64String(privateKeyParam.PublicExponent.ToByteArrayUnsigned()),
                     Convert.ToBase64String(privateKeyParam.P.ToByteArrayUnsigned()),
                     Convert.ToBase64String(privateKeyParam.Q.ToByteArrayUnsigned()),
                     Convert.ToBase64String(privateKeyParam.DP.ToByteArrayUnsigned()),
                     Convert.ToBase64String(privateKeyParam.DQ.ToByteArrayUnsigned()),
                     Convert.ToBase64String(privateKeyParam.QInv.ToByteArrayUnsigned()),
                     Convert.ToBase64String(privateKeyParam.Exponent.ToByteArrayUnsigned()));

        }

2.将publickey.crt 变为XML字符串

        public  string RSAPublicKeyXML()
        {
            RsaKeyParameters publicKeyParam = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(@"
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3/f13vz9utI4Tjnm4cTHCZ+hC
H6uOOec4vjYIIalzgVbzIzqCwPZJfQRSwt8Dtj3sexPBRZtVdQqU5AYWO7fSe6gG
dtgbxXVkG/rUN1rt/Hr2oX9tGdxQz4IK6ouUvpWDt42ql74r0N4XjJBnAGKzXEsQ
+ghye0euD+RQsalTIwIDAQAB"));
            return string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>",
                    Convert.ToBase64String(publicKeyParam.Modulus.ToByteArrayUnsigned()),
                    Convert.ToBase64String(publicKeyParam.Exponent.ToByteArrayUnsigned()));
        }

3.  将字符串加密

        public string RsaEncrypt(string value, bool usePkcs8 = false)
        {
            if (string.IsNullOrEmpty(value)) return value;

            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);
            string publicKey = this.RSAPublicKeyXML();
            rsa.FromXmlString(publicKey);//将公钥导入到RSA对象中,准备加密;
            var buffer = Encoding.UTF8.GetBytes(value);
            buffer = rsa.Encrypt(buffer, false);
            return Convert.ToBase64String(buffer);
        }

4.解密字符串

        public string RsaDecrypt(string value, bool usePkcs8 = false)
        {
            if (string.IsNullOrEmpty(value)) return value;

            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);
            string privateKey = this.RSAPrivateKeyXML();
            rsa.FromXmlString(privateKey);//将私钥导入RSA中,准备解密;          
            var buffer = rsa.Decrypt(Convert.FromBase64String(value), false);

            return Encoding.UTF8.GetString(buffer);
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值