问题标签 [mscapi]

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 投票
2 回答
3567 浏览

cryptoapi - Microsoft 是否提供连接到其自己的 MS CryptoAPI 的 PKCS #11 提供程序?

我希望使用 PKCS #11 接口运行一些测试,并且想知道 Microsoft 是否提供了基于软件的实现来提供 PKCS #11 功能?

与其等待 HSM 到达并正确配置,我宁愿现在就开始测试与接口的交互。

0 投票
3 回答
1687 浏览

windows - 微软 CryptoAPI 书

我需要使用 Microsoft CryptoAPI 编写自己的 SSL 套接字(CSocket ansestor)和服务器端证书验证。

你能告诉我哪本书对我有帮助(或任何其他用户友好的信息来源)?

0 投票
1 回答
11015 浏览

java - 需要一个示例 - 使用 Microsoft Crypto API 在 Java 中解密字符串

首先,我不是 Java 程序员。我正在寻找这个问题的示例解决方案,因为我的 Java 开发人员没有太多使用加密的经验。我们在网上找到的所有内容都与加密网页和处理 MS 密钥库有关。我们只想使用来自 PowerBuilder (PB) 的单个字符串并能够在 Java 中对其进行解密。这里的限制是 MS 库。由于某些限制,我们坚持使用这种加密方法,因此由 Java 端来处理被抛出的内容。

我有一个 PB 版本 10.2 程序,它需要调用这个 Java 实用程序并传递一个用户名和密码。我们正在尝试将密码加密为命令行友好字符串,因为这就是 PB 调用 Java 应用程序的方式。

在 PB 中,我使用以下对象: http ://www.topwizprogramming.com/freecode_crypto.html

代码的作用是包装 advapi32.dll 中的 Microsoft 加密 API。它使用的功能是:

CryptAcquireContext http://msdn.microsoft.com/en-us/library/aa379886(VS.85).aspx

CryptCreateHash http://msdn.microsoft.com/en-us/library/aa379908(VS.85).aspx

CryptHashData http://msdn.microsoft.com/en-us/library/aa380202(VS.85).aspx

CryptDeriveKey http://msdn.microsoft.com/en-us/library/aa379916(VS.85).aspx

CryptEncrypt http://msdn.microsoft.com/en-us/library/aa379924(VS.85).aspx

它使用 Microsoft Strong Cryptographic Provider 和 PROV_RSA_FULL。该代码将要加密的数据转换为 BLOB,然后将其传递给加密函数。在那里,它获取一个上下文,从上下文创建一个哈希对象,对密码进行哈希处理,从哈希中获取一个会话密钥,然后调用加密/解密。最后一件事是它接受返回的 BLOB 并将其转换为 ANSI 字符集下的字符串。

有许多常量,我一眼就知道其中一些来自哪里,而另一些则不是: ULong CRYPT_NEWKEYSET = 8 常量 ULong ERROR_MORE_DATA = 234

无论是在 1.5 中使用 BouncyCastle 之类的东西还是在 1.6 中使用用于 MS 的 Sun 加密接口来完成,我都不在乎,我们只是渴望看到这项工作,而且老实说我们都在头疼。


嘿,我需要加密一个字符串并将其存储为一个文件,然后我需要再次读取该文件并解密相同的字符串。但我不想加密整个文件。一旦我将所需的加密值存储在文件中,我需要将其单独转换为原始字符串。你能帮我看看示例代码吗?

0 投票
1 回答
2521 浏览

security - Microsoft CryptoAPI 的基本问题

我一直在浏览 MSDN 试图了解 crytoapi。下面是一些关于事情如何运作的问题和猜测。非常感谢任何答案或确认或反驳我的猜测。

根据我在http://msdn.microsoft.com/en-us/library/ms867086.aspx找到的说明,CSP 在会话之间保留公钥对。

在我看来,好像一个密钥容器可以包含:

它是否正确?容器关闭时非配对键是否被破坏?

创建/命名密钥容器的常用方法是什么?如何避免踩到其他应用程序容器?我需要一个带有公钥/私钥的容器,因此 cryptacquirecontext 的备注部分中提到的临时容器不适用。也许使用由一些固定部分加上序列号组成的创建名称。完成后可以删除容器。

cryptsignhash 指定使用签名或密钥交换私钥对散列进行签名。我想这意味着 cryptsignkey 将使用适当的 Alg_id 参数(值 CALG_RSA_KEYX 或 CALG_RSA_SIGN)找到由 cryptkeygen 创建的私钥。

如果我导出一个密钥,keyblob 是否包含说明它是什么类型的密钥的信息?

如果我导出 PUBLICKEYBLOB 并将其传输到其他环境。是否必须在新环境中导入该 blob 才能使用它来验证签名?cryptverifysignature 需要密钥的句柄,因此看起来必须首先导入它。导入 PUBLICKEYBLOB 是否会替换任何现有公钥/私钥对的公钥?我假设不是。

0 投票
2 回答
2412 浏览

windows - cryptoapi windows 7 支持

微软从 Vista 和服务器 2008 开始引入了下一代加密技术(CNG) 。但我的问题是要知道Microsoft 是否在 Windows 7 和 Server 2008 中支持旧的MS CAPI(例如在 windows 2003 和 windows xp 中)

谢谢

拉吉

0 投票
1 回答
3430 浏览

cryptography - 如何从 XML 或本机代码中的模数/指数导入 RSA 公钥,以便与 Windows CAPI 的 CryptVerifySignature 一起使用?

在 C# 中,我可以通过以下任一方式针对公钥验证哈希:

我需要知道的是,在给定入站 RSA 公钥的情况下,我如何使用 CAPI 来完成同样的事情?

我拥有验证哈希所需的大部分 CAPI 函数,除了了解如何将公钥导入加密提供者的上下文:

谢谢!

0 投票
2 回答
6767 浏览

c++ - Windows XP 与 Vista/7 上的 MS Crypto API 行为

我试图了解如何在 XP、Vista 和 Windows 7 上获取从 PEM 格式(示例包含在下面的代码中)导入的公钥。示例代码将在 XP 和 Windows Vista/7 上导入密钥,但不会一样的方法。

在 Windows XP 上,密码提供程序的名称中需要字符串“(Prototype)”,并允许对 CryptImportPublicKeyInfo 的调用通过。

在 Windows 7 上,显然存在“(原型)”提供程序,但不支持对 CryptImportPublicKeyInfo 的调用,这令人困惑。

这些操作系统之间的正确实现可能是什么样的?是否有必要检测 XP 并使用"(Prototype)"请求名称,而对于其他操作系统则没有它?是否有可能在某些 XP 系统上仍然会失败?

或者,有没有办法检测这种令人困惑的行为并选择支持必要调用的加密提供者?

Windows 7 上的输出:

Windows XP 上的输出:

产生该输出的 C++ 源代码:(需要 crypt32.lib)

0 投票
0 回答
1497 浏览

c# - 当 IE 使用身份验证代理时,C#/C++ X509Certificate2.Verify 失败 OCSP

我正在尝试使用 X509Certificate2.Verify() (和/或它的 C++/CAPI 等效项)验证证书。

问题是,当 Internet Explorer 的连接设置指定需要身份验证的代理时,OCSP 检查将始终失败(操作系统无法检查证书是否未被吊销,因为它没有通过代理的凭据.)

Microsoft 有一个与此类似的 KB,但并没有真正提供任何类型的修复。 http://support.microsoft.com/kb/915787

即使我有凭据(用户名和密码),我也无法将它们传递给加密 API(在 .NET 或本机中)。

即使存在强制身份验证的系统默认代理,是否有允许验证证书的解决方案?

谢谢!

编辑:

微软的一些迹象表明这根本不可能:

“CryptoAPI 也可能无法向代理或缓存服务器进行身份验证,这些服务器需要基本身份验证才能到达指向 CRL 分发点的 HTTP URL。” http://technet.microsoft.com/en-us/library/bb457027.aspx#EFAA

“对某些程序中不使用 Windows 集成身份验证的代理服务器的身份验证可能会失败。出现此问题是因为 Winhttp.dll 进程是为非交互式服务设计的,并且不会提示用户输入网络凭据。” http://support.microsoft.com/kb/887196

0 投票
3 回答
46266 浏览

c++ - Window C/C++ Crypto API 示例和提示

我问这个问题是因为我花了一天中最好的时间浏览 msdn 文档和其他不透明的资源,以获取有关如何开始使用 Windows C/C++ Crypto API 的简单直接指南。

我想看到一些示例代码,典型的包含路径,链接指南等,任何真正有用的东西。我知道这是一个不精确的问题,但我认为不精确的答案最好不要。

我会用我自己微薄的发现来让球滚动......

0 投票
2 回答
1876 浏览

java - Java中的MSCAPI证书选择框;SunMSCAPI?

我正在试验相对较新的 SunMSCAPI 安全提供程序。我想构建一个简单的小程序,提示浏览器弹出证书选择框。我会从那里拿走它。我已经用谷歌搜索了一种方式和另一种方式。有什么建议吗?