问题标签 [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 回答
2016 浏览

c++ - 使用 wincrypt 解密数据文件。遇到麻烦。示例显示 CBase64Utils?

我需要用wincrypt解密一些数据文件,网上的例子很少。我发现的最可靠的例子是here。但是,这是使用各种我似乎无法找到相关信息的类型(CBase64Utils、CString 等)。

我正在阅读最终的解决方案,试图理解这个过程,并得出了这个结论:

这对我来说是纯中文。任何人都可以理解它并希望清除一些浑水吗?谢谢

0 投票
1 回答
1658 浏览

c++ - 指定的算法无效 CryptoAPI

我正在尝试使用 128BIT AES 解密来解密某些东西。当我尝试调用 CryptDecrypt 时,我收到一条错误消息,指出“指定的算法无效”。使用此处发布的库时遇到同样的问题:http: //www.codeproject.com/KB/security/WinAES.aspx

什么会导致此错误?

我在 vista64bit 和 Visual Studio 2008 上使用 CryptoAPI。我检查了注册表并且 AES 库在那里......

编辑

InitWinCrypt 函数

AesOffering 结构:

编辑2

重新启动我的计算机并删除 CBC 块后。我现在收到错误数据错误。数据在 C# 中可以很好地解密。但我需要使用wincrypt来做到这一点。

0 投票
2 回答
2412 浏览

windows - cryptoapi windows 7 支持

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

谢谢

拉吉

0 投票
2 回答
4600 浏览

c++ - Wincrypt:无法解密用 C# 加密的文件。CryptDecrypt 的 NTE_BAD_DATA

我正在尝试使用 wincrypt 解密一个文件,但我似乎无法正确解密此函数。字节使用 C# 中的 RC2 实现进行加密,我为加密和解密过程提供相同的密码和 IV(在 C# 中加密,在 c++ 中解密)。

在最后的“CryptDecrypt”函数之前,我所有的函数都返回真。不用我再打字了,这里是函数:

输入是传递给函数的数据,加密。密码与 C# 中用于加密数据的密码相同。size 是加密时数据的大小。
在 CryptDecrypt 之前,上述所有函数都返回 true,我似乎无法弄清楚原因。同时,我不确定 CryptDecrypt 函数如何编辑我的“解密”变量,因为我没有传递它的引用。

任何关于为什么这不起作用的帮助或建议将不胜感激。这是我第一次尝试使用 wincrypt,也是多年来第一次使用 C++。

如果还有更多帮助,这是我的加密(在 C# 中):

我已经确认我在 C++ 中的哈希值与我在 C# 中的密钥相同,由 PasswordDeriveBytes.CryptDeriveKey 创建

0 投票
1 回答
2486 浏览

c - WinHttp:如何使用临时证书存储?

我有一个 C++ 应用程序,它与我们的一台服务器建立 HTTPS 连接。在我的理想世界中,我希望发生以下情况:

  1. 应用程序启动
  2. 应用程序使 Windows 信任服务器的根 CA(请不要使用 GUI,只需系统调用)
  3. 应用程序与服务器对话,完成工作等。
  4. App让windows忘记了服务器的根CA
  5. 完毕

希望这个根 CA 一定会被其他应用程序信任。因此我不想在系统范围内安装证书。如果用户不需要管理员权限,我也希望它。

我最初的计划是创建一个内存 (CERT_STORE_PROV_MEMORY) 存储,将我的证书添加到其中,然后使用 CertAddStoreToCollection 将该内存存储添加到系统存储。

虽然所有 CryptoAPI 函数调用都成功,但 WinHttp 并不喜欢它。

这是我正在做的事情的骨架 - 也许有人知道一个技巧?或者也许这首先是错误的?

几点注意事项:

  • 当我使用 WinHttp 的 SECURITY_FLAG_IGNORE_UNKNOWN_CA 时一切正常,所以我很确定这确实是问题所在。
  • 我已经看到了这个 SO question - 它很接近,但没有解决在应用程序运行时使证书仅暂时受信任的问题。

谢谢!

0 投票
1 回答
783 浏览

winapi - CryptEncrypt() API

当此函数返回时,在缓冲区末尾获取垃圾字节是否正常?

0 投票
3 回答
2720 浏览

c# - C#加密,C++解密。最后几个字节解密失败

对于我即将列出的代码长度,我深表歉意。

我需要在我的代码的 C# 端加密一个 xml 文件的内容,并在 C++ 中解密它。我在 C# 端和RC2CryptoServiceProviderC ++ 端使用 RC2。加密似乎工作正常,看起来像这样:CryptoStreamWincrypt

我的解密代码几乎可以完美运行。它缺少文件的最后两个字符,而是吐出垃圾字符。我已经尝试对解密的字符串进行空终止,但没有骰子。如下:

生成的 xml 文件应以</LudoData>. 目前,它以</LudoDat[funny looking s]b

为什么会这样?我怎样才能阻止这个?我对为什么会发生这种情况感到非常困惑。由于我以空值终止解密并且仅在最终字符上遇到问题,因此我不认为解密是问题(尽管我很想错)。完成文件加密时,我的加密可能有问题吗?

从 CryptDecrypt 返回时,dwCount 等于 size,即 11296。同时, originalSize 等于 11290。

0 投票
2 回答
1166 浏览

cryptography - Window CryptoAPI:我可以在生成 RSA 密钥对时选择公共指数吗?

使用 Windows CryptoAPI,有没有办法指定在生成新的密钥对时使用哪个公共指数(即 3 而不是 65537)?

作为一个额外的问题:我将如何使用 .NET 访问此功能RSACryptoServiceProvider

编辑:我的猜测是答案是“否”,但我想得到确认。

0 投票
1 回答
1382 浏览

c# - 将 Windows CryptoAPI PRIVATE KEY BLOB 转换为充气城堡 RsaPrivateCrtKeyParameters

有什么方法(类似于 Mono 中的 FromCapiPrivateKeyBlob)将 Windows CryptoAPI PRIVATE KEY BLOB 转换为 Bouncy Castle 使用的 RsaPrivateCrtKeyParameters?

0 投票
1 回答
864 浏览

encryption - 导入公私交换密钥对

我想将 RSA 1024 公私交换密钥对从 Machine-1 导出到 Machine-2。我在 XP 中使用 cryptoAPI。

在 Machine-1 中,我生成了密钥对。我包装了一个会话密钥,它实际上加密了一些真实数据。密钥容器名称是“PAIR1”。

在 Machine-2 中,我想用私钥(我在 Machine-1 中生成)解开会话密钥。为此,我想将密钥对从 Machine-1 导出到 Machine-2。

我知道导出持久密钥的安全漏洞。

我试过什么?

我从 Machine_1 将密钥对导出为 PKCS#12 -pfx 文件。当我将它导入到 Machine-2 时,密钥容器名称已从“PAIR1”变为空。我的应用程序需要相同的容器名称才能在交换密钥对中选择正确的私钥。是否可以更改密钥容器名称?

这行得通吗?

用 Machine-2 的公钥包装交换密钥对并将其导入 Machine-2。在这种情况下,您认为关键容器名称将保持不变还是会改变?我觉得这可能是正确的方法。

编辑: 我问这个查询的原因是因为我用交换密钥对(公钥)包装了一个会话密钥,并将包装的密钥与加密数据一起放在服务器的介质中。该媒体将绕过不同的客户端并返回到服务器。此时,我将使用解包的会话密钥解密我的数据。这种解包需要交换私钥。我这样做是为了演示目的,我不能指望我们的营销人员进行密钥交换等。我们希望向客户展示安全方面并减少与我们的营销人员进行设置的麻烦。

最后,我导出了密钥对并在我想要的任何地方导入了相同的密钥对,尽管 Ramsus 方法是正确的做法。