【问题标题】:DSA and Public Key ExchangeDSA 和公钥交换
【发布时间】:2012-10-09 18:27:06
【问题描述】:

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

  1. 生成硬件密钥,获取其哈希值。
  2. 生成的公钥和私钥。并用私钥加密了我的哈希函数。
  3. 我将此加密值连同公钥一起转发回客户端。
  4. 在客户系统中,我使用 DSASignatureDeformatter 的 VerifySignature 函数来验证我的加密密钥和硬件密钥。如果相等,我验证客户端。

现在我的问题是如何通过网络发送公钥。我尝试在文件中存储和转发各种 DSAParameters 值,例如 J、G、P,但由于键的大小发生了变化,这是不可行的。看看有没有人指导一下。

更新: 当我尝试在客户端的机器上这样做时

    DSAParameters KeyInfo;
    using (DSACryptoServiceProvider DSA = new DSACryptoServiceProvider())
    {

        // Import the key information.
        KeyInfo = DSA.ExportParameters(false);
    }

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

【问题讨论】:

  • 为什么可变密钥大小是个问题?
  • 铱星,请查看更新后的问题。我已经放了一些代码来解释。如果有任何帮助,我将不胜感激。
  • 我认为您将需要显示更多代码并提供有关您遇到的问题的更多详细信息 - 您如何执行序列化,如何传输它,当您发生什么错误时尝试在客户端使用反序列化的参数。 (还值得一提的是,所描述的方案似乎并不是特别安全)。

标签: c# .net dsa


【解决方案1】:

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

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

string publicKey = DSA.ToXmlString(false);

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-27
    • 2012-05-18
    • 2013-05-07
    • 2020-08-16
    • 2017-05-16
    • 2011-11-24
    • 1970-01-01
    • 2013-04-14
    相关资源
    最近更新 更多