问题标签 [wincrypt]
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.
c++ - 进入函数前的访问冲突异常
我有这个函数,它只是加密一个字符串(这个函数工作正常,并且经过测试)。
我有这段代码:
它只是调用传递字符串指针的函数。
该程序在调用该函数时会导致访问冲突异常Encrypt(&s)
,我猜这与&s
正在传递的参数有关,但我无法弄清楚。根据您的经验有什么想法吗?
c++ - 在一个应用程序中使用 AES 加密数据并在另一个 c++ wincrypt 中解密
我正在使用 wincrypt 使用 AES 加密服务器端的数据。我想解密来自客户端服务器的数据。我知道 AES 使用 IV 来增加随机化。在 python 中,我们可以指定 IV,因此在其他应用程序中加密和解密数据不是问题,因为我们有能力创建相同的 IV 和密钥。我没有找到太多关于这个主题以及在 wincrypt 中指定 IV 的方法,因此,它使得在其他应用程序中解密某些内容变得更加困难。以下是服务器相关功能:
我的问题是,如何在服务器中加密数据,在客户端解密,是否有必要为该目标指定 IV,如果是,该怎么做?
delphi - 如何将我所有的软件证书分别导出到 .pfx 文件?
我想以编程方式将我的所有软件证书分别导出到.pfx文件中,以签署 2 个新软件,这些新软件已经在另一台电脑上构建的最后一步。
为了做到这一点,我找到了一个 C++ 代码示例(在我翻译成 Delphi 之后)。
我的 Delphi 版本仍然没有经过测试,但即便如此我认为它工作正常。
参考:
- Carberp 中的 ExportSert.cpp
- WinCrypt.pas
- 如何使用 Delphi 访问 Windows 根证书颁发机构证书?
- 如何通过 CryptoAPI 将 Windows 证书存储中的证书导出为 Base64 字符串
我的麻烦是,显然我的 Delphi 版本(以及 C++ 示例)都将所有证书导出到一个唯一的 .pfx 文件,并且直到我知道(如果我错了,请修复我)只能使用 1 个 .pfx 文件/软件,那么在此代码导出到唯一 .pfx 文件的所有这些证书之后,我该如何分离?
我相信为找到的每个证书生成 1 个 .pfx 文件CertEnumCertificatesInStore
可以解决这个问题,但对此不确定。有人可以给我一个建议吗?
c - WinAPI - CryptDecrypt() 在 AES 256 中无法正常工作
我以前曾crypto++
在Visual Studio中使用过,但现在我想使用wincrypt.h
API 函数来使用带有IV(cbc 模式)的AES 256加密字符串。
我做了以下步骤,但我对功能感到困惑CryptEncrypt()
,CryptDecrypt()
因为它们似乎无法正常工作:
/li>CryptAcquireContextA
定义为创建一个CSP
:对于设置密钥,我使用这种方式(导入密钥):
/li>IV,密钥,明文大小为:
/li>
这是我的全部code
:
它只是加密了一半的明文而没有解密!即使只改变szPlainText
值,它也总是给我下面的输出(这意味着CryptEncrypt()
并且CryptDecrypt()
没有按预期工作!):
c - 不要正确加密wincrypt
我正在尝试使用 AES128 将字符串加密为 8 字节(64 位)的大小wincrypt.h
,请注意该字符串小于 128 位的 AES 块大小。
但它看起来不能很好地加密/解密,因为我得到了这个输出:
我做错了什么?&out_len
或者string_size
应该是 128 作为 AES 块大小?
c - Why my encrypted text doesn't change?
I have this program working that encrypts a string of 9 bytes using AES128 from wincrypt.h
but something strange happens when I change last character of the key:
from L"3igcZhRdWq96m3GUmTAiv2"
to for example L"3igcZhRdWq96m3GUmTAiv1"
or L"3igcZhRdWq96m3GUmTAiv9"
the encrypted texts are still the same as each other.
Note also that the SHA256 hashes of the keys that I exposed before are diferent each other:
Source: https://passwordsgenerator.net/sha256-hash-generator/
If I change a middle or first character of the key (for example the first 3) or add more characters, the encrypted text will change this time as expected behaviour.
Do you know why happens that? The encrypted text should change if I change any character of the key, but this don't happens when I change only the last character.
c++ - CryptQueryObject 系统地下降
我尝试在我的程序安装程序中集成根证书安装。我必须从证书创建一个对象,然后将其添加到商店。
我用这个自定义操作制作了自己的 dll 并将其添加到 WiX。
调试直接说执行了安装功能。但是通过一些神奇的操作,比如加入 MessageBox、调试,我从周期CryptQueryObject
true
中false
获取,但不是系统地。GetLastError
说Parameter is incorrect
。为什么会发生这种情况?
visual-c++ - Finding CRL distribution point URL from certificate using visual c++
I have to find CRL distribution point URL from a certificate. I managed to get obtain context (CERT_CONTEXT) of a certificate.
From this, how do I find CRL URL? To obtain publickeylength, there was a function CertGetPublicKeyLength. Similary is there anyway to find CRL Distribution point?
sign - 使用 WinCrypt 或 CNG 验证签名文件 (PKCS7)
我需要使用 Windows 加密 API 方法验证签名的 JAR 文件。我对加密和签名问题只有一个基本的了解。我对这些加密 API(WinCrypt、Bcrypt、Ncrypt)也很陌生。验证文件哈希不是问题,但签名部分阻止了我。
感谢 OpenSSL、PKCS7 RFC ( https://www.rfc-editor.org/rfc/rfc2315 ) 和其他各种来源,我能够找出 JAR 中 META-INF/LOCALSIG.DSA 的实际文件内容. 但经过两周的挖掘、反复试验,我仍然陷入困境,不知道还能尝试什么。
OpenSSL 有 nice command openssl smime -verify -inform der -in LOCALSIG.DSA -content LOCALSIG.SF -noverify
,这正是我想做的。不幸的是,我在 Windows API 中找不到如此高级的命令。
我尝试使用VerifySignature
所有三个 API 中的函数系列,但我需要为这些 API 提供公钥,而且我没有使用任何ImportKey
函数。因此,我尝试使用 手动剖析 ASN1 格式CryptDecodeObjectEx
,以便将各个部分作为 BLOB 传递给 API 函数。虽然我在这方面取得了一些成功,但我再次陷入困境,因为我不知道如何解析集合。我不想从头开始编写自己的 ASN1 解析器......
那么,如何将 PKCS7 签名文件与 Windows 加密 API 一起使用?
我想使用 OpenSSL 可能会更容易,但我必须说服我的雇主将 OpenSSL 添加到我们的代码库中只是为了这个目的......
更新: LOCALSIG.DSA 文件包含签名者证书和 LOCALSIG.SF 文件的签名哈希。这可以使用openssl pkcs7 -inform der -print_certs -text -in LOCALSIG.DSA
或openssl cms -cmsout -inform DER -print -in LOCALSIG.DSA
。
该证书由我们公司自签名并在证书存储中。我可能需要提供整个信任链。这就是为什么我将-noverify
选项添加到openssl smime -verify
.
实际上,有两种使用不同证书(内部和外部版本)的场景,一种使用 DSA(sig 文件包含一个证书),另一种使用 RSA(sig 文件包含三个证书)。这意味着我无法硬编码要使用的证书或方法。我需要从提供的文件中提取该信息。我怎么做?
c++ - 使用 wincrypt 将主题备用名称添加到自签名证书
如何在证书中添加主题备用名称。使用 wincrypt,我创建了证书并将其添加到“MY”和“root”路径,其中 CN 可以是机器完全限定的域名或主机名或 IP。作为主题备用名称,我想添加以下内容:DNS 名称=完全限定域名、DNS 名称=主机名和 DNS 名称=IP 如何执行此操作?我不想使用openssl。
这将创建证书并将其添加到证书中没有 SAN 的存储区
我尝试通过如下扩展列表:
有了这个,我可以在左窗格中以字节格式获取 SAN,右窗格显示我的字符串“DNS Names=abc.com”。
但我的要求是仅显示 SAN 中的 DNS 名称。