DSA和公钥交换

时间:2012-10-19 07:15:12

标签: c# .net dsa

我正在尝试使用DSA算法为我的应用程序实施许可解决方案。现在这就是我所做的:

  1. 生成一个硬件密钥,取其哈希值。
  2. 生成的公钥和私钥。并使用私钥加密我的哈希函数。
  3. 我将此加密值与公钥一起转发回客户端。
  4. 在客户端系统中,我使用DSASignatureDeformatter的VerifySignature函数来验证我的加密密钥和我的硬件密钥。如果相等,我验证客户端。
  5. 现在我的问题是如何通过网络发送公钥。我试图在文件中存储和转发各种DSAParameters值,例如J,G,P,但由于密钥的大小发生变化,这是不可行的。请看看是否有人可以指导。

    更新: 当我尝试在客户端的机器上执行此操作时

        DSAParameters KeyInfo;
        using (DSACryptoServiceProvider DSA = new DSACryptoServiceProvider())
        {
    
            // Import the key information.
            KeyInfo = DSA.ExportParameters(false);
        }
    

    它为各种成员生成的密钥大小与我从服务器发回的公钥参数不同。

1 个答案:

答案 0 :(得分:1)

好。有点晚了。但也许其他人会有同样的问题。

你应该像这样导出你的密钥:

string publicKey = DSA.ToXmlString(false);

所以你可以像这样导入它:

using (DSACryptoServiceProvider dsa = new DSACryptoServiceProvider())
{
    dsa.FromXmlString(publicKey);
    return dsa.VerifySignature()
}