C#非对称加密RSA实现,第1张

C#非对称加密RSA实现,第2张

做个非对称加密,看微软的简单,不能导出私钥和公钥。当然,这样的例子很多,但是你找不到任何关于如何导入导出密钥以及byte[]和string之间相互转换的信息(很多直接转换函数被调用,转换过程中会出现乱码,导致加解密失败。
根据项目需求,生成一个私钥和一个公钥,用公钥加密,用私钥解密大测试提示。这是可以实现的。
源代码如下:
1。生成一对密钥:
//
/Generate private key和public key arr[0]for private key arr[1]for public key
///
//
public static String[]Generate keys()
{
String[]sKeys = new String[2];
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
sKeys[0] = rsa。ToXmlString(true);
sKeys[1] = rsa。ToXmlString(false);
返回sKeys
}
2。加密:
//
//RSA Encrypt
///source string
///公钥[/br公共静态字符串EncryptString(string sSource,string sPublicKey)
{
RSA cryptoserviceprovider RSA = new RSA cryptoserviceprovider();
string plaintext = s source;
rsa。from XML string(sPublicKey);
byte[]密码字节;
byte[] byteEn = rsa。加密(编码。UTF8.GetBytes("a "),false);
密码字节= rsa。加密(编码。UTF8.GetBytes(明文),false);
StringBuilder sb string = new StringBuilder();
for(int I = 0;I <密码字节。长度;i++)
{
sbString。Append(cipherbytes[i] +",");
}
3。解密:
///RSA解密
//
//source String
///private key[/br public static String DecryptString(String s source,String sPrivateKey)
{
RSA cryptoserviceprovider RSA = new RSA cryptoserviceprovider();
rsa。from XML string(sPrivateKey);
byte[] byteEn = rsa。加密(编码。UTF8.GetBytes("a "),false);
string[] sBytes = sSource。拆分(',');
for(int j = 0;j < sBytes。长度;j++)
{
if (sBytes[j]!= " ")
{
byteEn[j]= Byte。parse(sBytes[j]);
}
}
byte[]plaint bytes = RSA。解密(byteEn,false);
返回编码。UTF8 . GetString(plaint bytes);
}
返回sbString。ToString();
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C#非对称加密RSA实现

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情