整个算法的流程是:
接收方先同时生成公钥和私钥, 再把公钥传递给发送方, 发送方收到公钥后, 用此公钥将自己的明文加密, 然后将加密后的密文传递给接收方, 接收方用自己的私钥解密得到明文. 以下是演示这个过程的示例代码:
接收方先同时生成公钥和私钥, 再把公钥传递给发送方, 发送方收到公钥后, 用此公钥将自己的明文加密, 然后将加密后的密文传递给接收方, 接收方用自己的私钥解密得到明文. 以下是演示这个过程的示例代码:
没有永恒的事
一切都在不断重复
我热爱这个世界
但绝不骄纵了它
//
待加密的明文
string originText = " Hello " ;
// 公钥
string publicKey;
System.Security.Cryptography.RSACryptoServiceProviderrsaReceive =
new System.Security.Cryptography.RSACryptoServiceProvider();
System.Security.Cryptography.RSACryptoServiceProviderrsaSend =
new System.Security.Cryptography.RSACryptoServiceProvider();
// 接收方先生成公钥,并将此公钥公开
// 参数false表示只生成公钥,如果为true,则同时生成公钥和私钥.
publicKey = rsaReceive.ToXmlString( false );
// 发送方接收公钥,并用此公钥加密数据
rsaSend.FromXmlString(publicKey);
// 发送方执行加密.
// 第二个参数指示是否使用OAEP,如果使用,则程序必须运行在WindowsXP及以上版本的
// 系统中.无论true或false,解密时必须跟加密时的选择相同.
byte []cryp = rsaSend.Encrypt(System.Text.Encoding.UTF8.GetBytes(originText), false );
// 接收方用自己的私钥解密
byte []b_OriginText = rsaReceive.Decrypt(cryp, false );
string originText = " Hello " ;
// 公钥
string publicKey;
System.Security.Cryptography.RSACryptoServiceProviderrsaReceive =
new System.Security.Cryptography.RSACryptoServiceProvider();
System.Security.Cryptography.RSACryptoServiceProviderrsaSend =
new System.Security.Cryptography.RSACryptoServiceProvider();
// 接收方先生成公钥,并将此公钥公开
// 参数false表示只生成公钥,如果为true,则同时生成公钥和私钥.
publicKey = rsaReceive.ToXmlString( false );
// 发送方接收公钥,并用此公钥加密数据
rsaSend.FromXmlString(publicKey);
// 发送方执行加密.
// 第二个参数指示是否使用OAEP,如果使用,则程序必须运行在WindowsXP及以上版本的
// 系统中.无论true或false,解密时必须跟加密时的选择相同.
byte []cryp = rsaSend.Encrypt(System.Text.Encoding.UTF8.GetBytes(originText), false );
// 接收方用自己的私钥解密
byte []b_OriginText = rsaReceive.Decrypt(cryp, false );