当前位置:编程学习 > C#/ASP.NET >>

RSA 数字签名异常



RSA 数字签名,传到虚拟主机上就不行呢。


百度了会发现别人说是目录权限的问题。。。


可是虚拟主机   无法更改那些目录的权限。。。我问了空间商。。说改不了。




这样改   怎么用  RSA  数字签名 ?????????


难道  C#   RSA  签个名。。还必须在  C  盘写几个文件吗 ?   这个不就是算法的问题吗 ?







            using (System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(KeySize))
            {
                rsa.FromXmlString(privateKey);

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

                return byteToHex(data);
            }








拒绝访问。

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)
  --------------------编程问答-------------------- 系统找不到指定的文件。

mscorlib
   在 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)
 



百度了下。。。。

UseMachineKeyStore = true;   这个也不行  报ThrowCryptogaphicException异常。


不弄那个就在 System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) 异常。



--------------------编程问答-------------------- public string EnCodes(string text)
{
    RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider();
    RSACryptoServiceProvider rsa2 = new RSACryptoServiceProvider();

    string publicKey = rsa1.ToXmlString(true);
    HttpContext.Current.Response.Cookies["PublicKey"].Value = publicKey;
    rsa2.FromXmlString(publicKey);
    byte[] ECode = rsa2.Encrypt(System.Text.Encoding.UTF8.GetBytes(text),false);

    return Convert.ToBase64String(ECode);
}

//解密算法
public string DeCodes(string text)
{
    RSACryptoServiceProvider rsa1 = new RSACryptoServiceProvider();

    byte[] DCode = Convert.FromBase64String(text);
    string publicKey = HttpContext.Current.Request.Cookies["PublicKey"].Value.ToString();
    rsa1.FromXmlString(publicKey);
    byte[] DCode2 = rsa1.Decrypt(DCode,false);

    return System.Text.Encoding.UTF8.GetString(DCode2);
}

--------------------编程问答--------------------
引用 1 楼 kissxrl 的回复:
系统找不到指定的文件。

mscorlib
   在 System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
   在 System.Security.Cryptography.RSACryptoServiceProvider.Imp……



大哥。。你的和我的代码差不多。。。没什么区别把。



除了一个  cookies 以外。 --------------------编程问答-------------------- 你的 encoding.GetBytes(input) 得到的是多少字节长? --------------------编程问答-------------------- 给你搜到一个文章,看看有没有用。  http://www.nod6.net/?p=45

我记得我好像是测试到110个字节,再长就不行了。所以我将byte[]放入 MemoryStream,然后以一个110字节的buffer分块取出,分块计算。 --------------------编程问答--------------------


错误是出在  RSA.FromXmlString(String xmlString)   这句。。 --------------------编程问答--------------------
引用 6 楼 kissxrl 的回复:
错误是出在  RSA.FromXmlString(String xmlString)   这句。。


你的虚拟机导入原来的系统的个人证书了? --------------------编程问答--------------------

虚拟机无法导入证书呀。。。我的  私匙  是  XML 格式的。 --------------------编程问答-------------------- 虚拟主机无法导入证书呀。。。     我的 私匙 是 XML 格式的。 --------------------编程问答-------------------- 你的问题解决了吗?我也遇到和你一样的问题 --------------------编程问答--------------------
这个问题是ASP.NET的问题。

搞个 RSA 非要在  C 盘写几个文件。。可以虚拟主机不让你写。。所以就出错呢。


唉。。我实在没办法呢。。。自己找代码。。自己写了个  RSA 算法。。好用的很。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,