问题标签 [cryptoapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
894 浏览

outlook - 使用智能卡微型驱动程序进行电子邮件签名 (Outlook) [Windows]

我正在开发智能卡微型驱动程序,并尝试使用 Outlook 2007 签署电子邮件。我已经在微型驱动程序中实现了所有必要的功能。

我能够创建一个“智能卡用户”证书并将其保存在智能卡上(通过 Minidriver 使用 Microsoft 证书服务)。

  • 当我尝试通过 Outlook 签署电子邮件时收到错误消息(内部错误),对微型驱动程序的最后一次调用是针对带有“cmapfile”的 ReadFile

  • 当我尝试使用不同的非智能卡证书通过 Outlook 签署电子邮件时,它工作正常。

  • 当我尝试使用 CryptoAPI(基于 Windows SDK 示例)对数据进行签名时,它工作正常。

我正在使用 Windows 7。

有人知道如何调试这个问题吗?

我试图启用 CAPI2 事件日志,它没有给我任何好的信息。

0 投票
0 回答
236 浏览

c# - 如何使用 CryptoAPI 和 .NET 加密 (TripleDESCryptoServiceProvider) 生成等效输出?

我有一些使用 TripleDES 加密加密和解密数据的 C#/.NET 代码。它非常接近 MSDN 提供的示例代码。加密部分如下所示:

通过 C# 中的加密和解密,这一切都像一个魅力。问题是我需要编写一个小型 Win32 实用程序来复制上面的加密。我已经尝试了几种使用 CryptoAPI 的方法,但无论我做什么,我都无法获得 .NET 片段可以解密的输出。有人可以告诉我产生相同输出的等效 C++ 代码是什么吗?

我不确定 .NET 函数使用 CryptoAPI 的哪些方法来加密数据。使用了哪些选项,使用了什么生成密钥的方法?

在有人建议我无论如何都只用 C# 编写它,或者为他们创建一些通用库桥之前,不幸的是,这些选项不在桌面上。它确实必须在带有 .NET 且不使用 DLL 的 Win32 中工作。我在更改 C# 代码方面有一些余地。

如果这是愚蠢的,我提前道歉,因为我是加密新手。

0 投票
2 回答
3359 浏览

c - 将 SHA1 与 Microsoft CAPI 结合使用

我有一个 SHA1 哈希值,我需要对其进行签名。CryptSignHash() 方法需要 HCRYPTHASH 句柄进行签名。我创建它,因为我已经有了实际的哈希值然后设置它:

hashBytes 是一个 20 字节的数组。

然而问题是这个 HCRYPTHASH 句柄产生的签名是不正确的。我将问题追溯到这样一个事实,即 CAPI 实际上并没有使用我的 hashBytes 数组中的所有 20 个字节。由于某种原因,它认为 SHA1 只有 4 个字节。

为了验证这一点,我编写了这个小程序:

这会打印出 hashLength: 4 !

谁能解释我做错了什么或为什么 Microsoft CAPI 认为 SHA1 是 4 字节(32 位)而不是 20 字节(160 位)。

0 投票
2 回答
479 浏览

c# - 如何了解 mscorlib?

我想将数据读入 RSAParameters 结构(RSAParameters)并检查两次,数据是否正确。但是,我仍然收到错误“无效数据”异常:

如何查看源代码以检查 _ImportKeys 引发异常的原因?我没有使用 .dll '解密'的经验。是否有任何符号可以在 Visual Studio 8.0 的某个地方引用?谢谢你。

0 投票
1 回答
3048 浏览

windows - CryptStringToBinary 不适用于以 NULL 结尾的字符串。为什么?

有谁知道为什么这段代码不起作用?

非常感谢您!

汤姆

0 投票
3 回答
920 浏览

c++ - 使用 RSA (PKCS 7) 分配/验证签名

对于使用 RSA 加密消息操作(PKCS#7)分配/验证签名的简单快速库有什么建议吗?

0 投票
2 回答
56303 浏览

java - 如何在 Java 中生成与 Python 示例等效的 HMAC?

我正在考虑实现一个通过Java 中的Oauth 获得 Twitter 授权的应用程序。第一步是获取请求令牌。这是应用引擎的Python 示例

为了测试我的代码,我正在运行 Python 并使用 Java 检查输出。以下是 Python 生成基于哈希的消息验证码 (HMAC) 的示例:

输出:

如何在 Java 中复制这个示例?

我在 Java中看到了HMAC 的一个例子:

它使用javax.crypto.Mac,一切都很好。但是,SecretKey构造函数需要字节和算法。

Python示例中的算法是什么?没有算法如何创建 Java 密钥?

0 投票
1 回答
1436 浏览

c# - 尝试使用 C# 中的 Win32 API 执行 Diffie Hellman 密钥交换

我正在尝试构建一些代码,这些代码将在旧的 CAPI 或新的基于 CNG 的 Diffie-Hellman 算法之间切换。

(尽管有文档,但新的基于 ECC 的 DH 算法作为 CNG 的一部分在 Windows XP 上不受支持)。

无论如何,我已经开始公开 Win32 CAPI,如下:

我已经开始在此之上构建一个 .NET DH 类:

我正在使用此文档

但是,我意识到我不确定我需要遵循的过程是什么;我所说的“公钥”可能不是!

因此,非常感谢您提供有关如何使用 CAPI 执行 DH 密钥交换的分步指南!

谢谢。

0 投票
1 回答
242 浏览

encryption - 提交证书请求 - 域外

我需要向我域外的证书颁发机构提交 PKCS#10 证书请求。MSDN 中的这篇文章ICertRequest2展示了一种使用COM 对象在网络内提交证书请求的方法。

在哪里

我的问题是如何从域外的客户以编程方式提交我的请求。

我不想使用 Microsoft 网络注册页面,因为这需要是一个自动化过程。

我的 CA 是 2003 Enterprise,客户端是 XP SP3。

请问有什么想法吗?

谢谢

0 投票
1 回答
718 浏览

c# - 调用 CryptGetKeyParam 时出现异常

我正在尝试使用 CryptoAPI (CAPI) 来执行 Diffie Hellman 密钥交换。我正在使用 MSDN 文档。

第一次调用 CryptGetKeyParam 完美运行,即成功返回 g 的大小,为 64。

然后代码在最后一行失败,要么通过 res = true 不向 g 缓冲区返回任何内容(如该示例中的情况),要么在我使用以下调用时使用 AccessViolationException:

是的,我已经重载了 P\Invoke 方法:

对此有任何想法/想法吗?

*有趣的是,我已经设法让一个完整的 Diffie Hellman 密钥交换工作,即成功地在两方之间同意相同的秘密 (s1)。但这是使用预定义的 P 和 G 参数。我正在重新编写代码,因为有些东西似乎不正确,因为每次密钥交换的派生秘密都是相同的,这意味着 X 是一致的。(即 Bob 和 Alice 每次都同意 s1!?) - 在这里,我再次遇到了 CryptGetKeyParam 的问题,因为我在使用 KP_KEYLEN 时无法确定会话密钥的大小?!*