关于VS.NET RSACryptoServiceProvider的疑惑
2008-07-18 00:48
274 查看
RSA的安全性依赖于大数难于分解这一特点。公钥和私钥都是两个大素数(大于100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。
密钥对的产生。选择两个大素数,p 和q 。计算:n = p * q 然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 )互质(PS:为了提高加密速度,e一般从以下三个值中选:3,17,65537,MS选的就是65537,专家认为三个值中任选一个都不会造成安全问题)。最后,利用Euclid 算法计算解密密钥d, 满足e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) ),其中n和d也要互质。数e和n是公钥,d是私钥。
两个素数p和q不再需要,应该丢弃,不要让任何人知道。加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s,其中 2^s <= n, s 尽可能的大。对应的密文是:
ci = mi^e ( mod n )
解密时作如下计算:
mi = ci^d ( mod n )
根据RSA原理,用e和n加密,用d和n解密,事实上也可用d和n解密,而用e和n解密。
VS.NET 的RSACryptoServiceProvider只提供公钥(可独立导出),私钥(不能独立导出,如果要导出则导出全部RSA参数)解密,这样用RSACryptoServiceProvider无论如何不能实现私钥加密,公钥解密,在某些情况下(如软件注册算法)就很不方便。我就搞不懂,MS的RSA实现私钥为何必须要带RSA的全部参数,而不只是d和n?
密钥对的产生。选择两个大素数,p 和q 。计算:n = p * q 然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 )互质(PS:为了提高加密速度,e一般从以下三个值中选:3,17,65537,MS选的就是65537,专家认为三个值中任选一个都不会造成安全问题)。最后,利用Euclid 算法计算解密密钥d, 满足e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) ),其中n和d也要互质。数e和n是公钥,d是私钥。
两个素数p和q不再需要,应该丢弃,不要让任何人知道。加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s,其中 2^s <= n, s 尽可能的大。对应的密文是:
ci = mi^e ( mod n )
解密时作如下计算:
mi = ci^d ( mod n )
根据RSA原理,用e和n加密,用d和n解密,事实上也可用d和n解密,而用e和n解密。
VS.NET 的RSACryptoServiceProvider只提供公钥(可独立导出),私钥(不能独立导出,如果要导出则导出全部RSA参数)解密,这样用RSACryptoServiceProvider无论如何不能实现私钥加密,公钥解密,在某些情况下(如软件注册算法)就很不方便。我就搞不懂,MS的RSA实现私钥为何必须要带RSA的全部参数,而不只是d和n?
相关文章推荐
- 在ASP.NET 中调用RSACryptoServiceProvider失败,提示未找到文件
- .NET RSACryptoServiceProvider PEM + DER Support
- 一个完整的类用来生成RSACryptoServiceProvider单例类(.NET)
- .NET RSACryptoServiceProvider【创建公共/私有密钥对】
- 一个期待中的网站(关于asp.net dotnetnuke reporting service 开发的vs.net插件)
- 在ASP.NET 中调用RSACryptoServiceProvider失败,提示未找到文件
- 关于在vs.net中的.htm里面添加连接,就会出现下载.ASPX文件的提示?
- 关于VS.NET中多个项目的工程相互引用和多个dll引用的问题!
- vs .net 2005 打开VSS项目时出现:"could not find the visual sourcesafe internet web service connection"的解决方案
- C# RSACryptoServiceProvider加密解密签名验签和DESCryptoServiceProvider加解密
- WebService VS .NET Remoting
- 转载 WCF VS ASPNET WEB SERVICE
- VBCodeProvider .net compiler service interface or something like that
- AngularJS之Factory vs Service vs Provider
- 关于vs.net 2005 的日记2
- AngularJS 之 Factory vs Service vs Provider
- vs.net c# 安装、注册windows service服务,判断服务是否存在,是否启动
- 关于VS2013未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService...匹配的导出
- AngularJS 之 Factory vs Service vs Provider
- AngularJS: Factory VS Service VS Provider