求一个用私钥加密,公钥解密的例子(RSACryptoServiceProvider)

changxiang 2009-02-03 01:33:06
如题,在网上找到一段代码有两个方法,加密是用公钥,解密用私钥,网上流传的不是“私钥加密,公钥解密”吗!很是困惑!
public static string RSAEncryptString(string publicKey, string encryptString, bool isXml, bool is16)
{
try
{
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
byte[] plainTextArray, cypherTextArray;
if (isXml)
rsa.FromXmlString(publicKey);
else
rsa.ImportCspBlob(Encoding.Default.GetBytes(publicKey));
plainTextArray = (new UnicodeEncoding()).GetBytes(encryptString);//Encoding.Default.GetBytes(encryptString);
cypherTextArray = rsa.Encrypt(plainTextArray, false);
.....
...全文
3664 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
LeON382 2011-09-02
  • 打赏
  • 举报
回复
遇到同样问题,坐等
xueyhfeng 2011-06-03
  • 打赏
  • 举报
回复
我的方法,http://www.cnblogs.com/hhh/archive/2011/06/03/2070692.html
ShinyKang 2011-04-20
  • 打赏
  • 举报
回复
私钥加密公钥解密的好处:
公司做了一个软件,客户要买这个软件放到客户的服务器上运行,但购买后公司要给用户一个授权文件(该文件是用用户服务器cpu 编号和私钥生成的文件)是的,文件是公开的,公钥也是公开的,但是解密出来后,公司的软件就会去把解密的信息和服务器的cpu 编号对比,从而达到验证的功能,当然这种可以用数字签名实现。
但如果授权文件中还有一个授权时间呢?也就是比较当前时间,那就得用私钥加密并用公钥去解密出来了,得到时间后在去比较。
ShinyKang 2011-04-20
  • 打赏
  • 举报
回复
3楼真TM见鬼,你用私钥加的密可以用公钥去解吗?你TM自己去试一下,不知道就不要乱P
snaker198904 2010-06-09
  • 打赏
  • 举报
回复
用RSACryptoServiceProvider签名验签
byte[] messagebytes = Encoding.UTF8.GetBytes("luo罗");
RSACryptoServiceProvider oRSA = new RSACryptoServiceProvider();
string privatekey = oRSA.ToXmlString(true);
string publickey = oRSA.ToXmlString(false);

//私钥签名
RSACryptoServiceProvider oRSA3 = new RSACryptoServiceProvider();
oRSA3.FromXmlString(privatekey);
byte[] AOutput = oRSA3.SignData(messagebytes, "SHA1");
//公钥验证
RSACryptoServiceProvider oRSA4 = new RSACryptoServiceProvider();
oRSA4.FromXmlString(publickey);
bool bVerify = oRSA4.VerifyData(messagebytes, "SHA1", AOutput);
情深 2010-05-20
  • 打赏
  • 举报
回复
你可以 加密用公钥,则解密需要私钥
达到你所想要的要求呀
A B 生成一个密钥对
A把公钥发给B
B把公钥发给A
A要给B发数据就用 B的公钥加密数据
B要给A发数据就用 A的公钥加密数据
这样不就实现了你想要的吗
顾君彦 2009-02-03
  • 打赏
  • 举报
回复
交换一下就可以了。

RSA可以生成一个密码对,其中一个是公钥一个是私钥。

加密用公钥,则解密需要私钥,加密用私钥,则解密用公钥。

所谓的公钥加密,私钥解密,一般是用于安全密码种子交换上的。

数字签名中,采用的是私钥加密,公钥解密验签。
优途科技 2009-02-03
  • 打赏
  • 举报
回复
John_Yang 2009-02-03
  • 打赏
  • 举报
回复
汗,看来阁下对公钥加密体制理解有误哈

我举两个例子。
1、公钥加密体制用于保密性时,就是公钥加密,私钥解密。 因为公钥是可以公开了, 那么任何人都可以使用公钥对信息进行加密,但是只有持有私钥的人才能正确解密。这样就保证了信息的保密性,因为只有私钥持有者才能正确解密。
2、公钥加密体制用于认证性时,比如数字签名,即私钥持有者对信息进行签名,验证者可以根据公开的公钥进行验证签名是否正确和有效,即实现了认证性,以及不可抵赖性。

不知道这样讲,LZ是否能理解

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧