首页 新闻 会员 周边 捐助

win03,.net3.5虚拟主机上RSA加密程序出错,提示“系统找不到指定的文件”,200分求教

0
悬赏园豆:200 [已解决问题] 解决于 2010-04-13 13:27

错误:系统找不到指定的文件。

堆栈: 在 System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) 

 在 System.Security.Cryptography.Utils.ImportCspBlobHelper(CspAlgorithmType keyType, Byte[] keyBlob, Boolean publicOnly, CspParameters& parameters, Boolean randomKeyContainer, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle) 

 在 System.Security.Cryptography.RSACryptoServiceProvider.ImportCspBlob(Byte[] keyBlob) 

IIS版本:IIS 6.0

.net版本:3.5

参考文档:http://social.msdn.microsoft.com/forums/en-US/clr/thread/7ea48fd0-8d6b-43ed-b272-1a0249ae490f/

问题重点:我使用的是万网的虚拟主机,本地测试通过,主机上不通过。

强调:这个问题对我很重要,如果能解决我200分全部送上。我在web上是新手,希望答案简单明了些,谢谢。

问题补充: 我在网站中想使用System.Security.Cryptography.RSACryptoServiceProvider类对数据加密,而不是对webconfig加密。 由于是虚拟主机,我无法使用密钥容器,所以选择了import密钥,结果就报了如上错误。 我通过设置RSACryptoServiceProvider的静态属性UseMachineKeyStore 为true解决了这个问题。 msdn帮助上有以下说明: C# public static bool UseMachineKeyStore { get; set; } 属性值 类型:System.Boolean 如果密钥应保持在计算机的密钥存储区中,则为 true;否则为 false。 备注 将此属性设置为 true 相当于将 UseMachineKeyStore 标志传递给 CspParameters 对象。UseMachineKeyStore 属性适用于当前应用程序域中的所有代码,而 CspParameters 对象只适用于显式引用该属性的类。当在一个没有加载用户配置文件的帐户下模拟或运行时,这些设置很有用。
roger.lee的主页 roger.lee | 初学一级 | 园豆:-1
提问于:2010-04-12 21:33
< >
分享
最佳答案
0

你在本地加密没问题,是你有特殊权限。
如果你是使用虚拟主机等不能访问物理的服务器,你仍然能够通过编程方式加密的连接字符串:

1 Configuration config = Configuration.GetWebConfiguration(Request.ApplicationPath);
2 ConfigurationSection section = config.Sections["connectionStrings"];
3 section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");;
4 config.Update ();
参考:
http://www.cnblogs.com/shanyou/archive/2006/02/08/327196.html

收获园豆:200
邀月 | 高人七级 |园豆:25475 | 2010-04-13 10:25
谢谢邀月,我不是想加密webconfig,我是想使用RSACryptoServiceProvider类对其他内容加密。但是看到既然虚拟主机能用rsa加密webconfig,也许我的这个问题确实还是有解决办法的。
roger.lee | 园豆:-1 (初学一级) | 2010-04-13 10:50
@roger.lee:其实你这样加密只是加密字串变成非明码而已,如果别我人获取你的dll,仍然可以反编译出来。仿原代码得出明码。这就需要代码混淆等手段了。
邀月 | 园豆:25475 (高人七级) | 2010-04-14 08:48
其他回答(3)
0

感觉以上的回答,答非所问;

也在万网的主机上使用RSA加密出现了类似的问题,期待高手来帮忙解决

jimXX | 园豆:205 (菜鸟二级) | 2011-09-06 18:36
0
IT鸟 | 园豆:349 (菜鸟二级) | 2012-05-25 13:47
0

我也遇到类似的问题:

后来我在用到之前加:RSACryptoServiceProvider.UseMachineKeyStore = True

就解决问题了

 

不知道是否和你一样^-^

小火 | 园豆:242 (菜鸟二级) | 2013-01-18 17:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册