微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐