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] 举报,一经查实,本站将立刻删除。