none
求助:C# RSA 数字签名无法使用!!!! RRS feed

  • 问题

  •  

    本地主机测试无任何问题。 传到虚拟主机上就不行呢。    估计是没有操作  密匙容器的权限,,,可是虚拟主机。。。我也没办法修改文件夹的权限呀 ?      

    该怎么弄,,才能在虚拟主机上用  ?  就是不操作 密匙容器 (没有操作权限)    来使用  RSA

    源码:

                RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024);

                rsa.FromXmlString(privateKey);        //这句产生异常,   系统找不到指定的文件。

      在 System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
       在 System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters(RSAParameters parameters)
       在 System.Security.Cryptography.RSA.FromXmlString(String xmlString)

                byte[] data = rsa.SignData(encoding.GetBytes(input), new SHA1CryptoServiceProvider());

     

     

    我修改源码为  RSACryptoServiceProvider.UseMachineKeyStore = true;  (使用公共密匙容器)

    出现错误:(估计也是没有权限)

    mscorlib
       在 System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)
       在 System.Security.Cryptography.Utils._CreateCSP(CspParameters param, Boolean randomKeyContainer, SafeProvHandle& hProv)
       在 System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
       在 System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters(RSAParameters parameters)
       在 System.Security.Cryptography.RSA.FromXmlString(String xmlString)
       在 AuthServer.Encrypt.RsaSignData(String input)

     

    • 已编辑 kissmja 2011年3月4日 11:11
    2011年3月4日 10:38

答案

  • 如果是虚拟主机的话,请打电话给客服,说明您要用 RSA,或许他们会提供现成的 RSA 密钥文件。。。

    文件夹没有权限这个是很显然的,因为 NETWORK SERVICE 并不是 Interactive 账户,更不是管理员。多半 ASP.NET 跑在 NETWORK SERVICE 账户下。


    Mark Zhou
    2011年3月7日 9:13

全部回复

  • C:\Documents and Settings\username\Application Data\Microsoft\Crypto

    C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto

     

    这两个目录都没有操作权限 

    2011年3月4日 11:03
  • 没有操作权限,那就给相应目录加上权限试试,具体过程如下:
    在文件夹右键菜单里找到属性à安全选项卡 à “编辑”, 然后在弹出窗口中选择你的当前账户,在下面的小窗口中将相应的权限打钩,然后”应用”。
    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月7日 7:33
    版主
  • 如果是虚拟主机的话,请打电话给客服,说明您要用 RSA,或许他们会提供现成的 RSA 密钥文件。。。

    文件夹没有权限这个是很显然的,因为 NETWORK SERVICE 并不是 Interactive 账户,更不是管理员。多半 ASP.NET 跑在 NETWORK SERVICE 账户下。


    Mark Zhou
    2011年3月7日 9:13
  •  

     

    汗。。。说了是虚拟主机呢。。。虚拟主机我除非飞过去改权限。。

     

    在文件夹右键菜单里找到属性” à “安全选项卡 à “编辑”, 然后在弹出窗口中选择你的当前账户,在下面的小窗口中将相应的权限打钩,然后”应用”。”

    2011年3月7日 17:36
  •  

     

    现在的主机,为了安全,,很多都是给了很少的权限。。

     

    怎么可能让你去读写  系统盘。。。

     

    狂汗。。。不知道   微软  怎么想的。

     

     

    难道真的没办法吗       ?》

     

     

    看来只能自己重新写一个   RSA  算法呢。

    2011年3月7日 17:38