首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.net中使用KSP持久化密钥?

如何在.net中使用KSP持久化密钥?
EN

Stack Overflow用户
提问于 2020-09-23 10:27:38
回答 1查看 23关注 0票数 0

我正在制作一个使用WPF的应用程序,我想使用Window的CNG。然而,我在存储非对称密钥时遇到了一个问题,这样它就会在不同的会话中持续存在。我希望生成密钥,这样公钥和私钥就不会更改。我该怎么做呢?

我一直在尝试使用KSP来存储密钥,但是还没有发现如何正确地访问和使用它。任何密钥存储方法都可以工作(只要它是安全的),所以我不依赖于KSP。我四处寻找答案,但找不到一个清楚的解释。

编辑:我应该提一下,虽然微软的CngKey.Create(名称)文档会创建一个持久化密钥,但它似乎不起作用。当我再次尝试使用该密钥时,我的公钥和私钥的值都会发生变化。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-25 10:23:59

经过大量的试验和错误,我发现这是我的密钥生成的问题。我将在这里发布代码,以防其他人有类似的问题。

下面的代码示例将创建并存储一个带有KSP的CngKey,以便与RSA算法一起使用:

代码语言:javascript
复制
    CngKey key;
    bool keyExists = CngKey.Exists(KEY_NAME);
    if (!keyExists)
    {
        CngKeyCreationParameters parameters = new CngKeyCreationParameters()
        {
            ExportPolicy = CngExportPolicies.AllowPlaintextExport,
            Provider = CngProvider.MicrosoftSoftwareKeyStorageProvider,
            KeyUsage = CngKeyUsages.AllUsages
        };
        CngProperty property = new CngProperty("Length", BitConverter.GetBytes(RSA_KEY_SIZE), CngPropertyOptions.None);
        parameters.Parameters.Add(property);

key = CngKey.Create(CngAlgorithm.Rsa, KEY_NAME, parameters);

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64020163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档