gpt4 book ai didi

c - 使用 CryptoAPI 将 UTF8String 编码为 ASN1

转载 作者:行者123 更新时间:2023-11-30 15:02:27 25 4
gpt4 key购买 nike

我使用此代码在 ASN1 中对 UTF8String 进行编码:

const char *charExtensionValue = "test value тест тест with some cyrillic symbols";

CERT_NAME_VALUE myNameValue;
myNameValue.dwValueType = CERT_RDN_UTF8_STRING;
myNameValue.Value.cbData = (DWORD)(strlen(charExtensionValue)+1)*2;
myNameValue.Value.pbData = (LPBYTE)charExtensionValue;

CERT_BLOB encodedBlob;

bool checkASN1Encoding = CryptEncodeObjectEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, X509_ANY_STRING, &myNameValue, CRYPT_ENCODE_ALLOC_FLAG, NULL, &encodedBlob.pbData, &encodedBlob.cbData);

CryptEncodeObjectEx 运行良好,没有任何错误,但结果不是预期的:

OCTET STRING, encapsulates {
UTF8String "ø§³û¦© Ґѐô´

我做错了什么?

最佳答案

文档说 CERT_RDN_UTF8_STRING 意味着值成员必须是“在线路上编码为 1、2 或 3 个八位字符序列的 16 位 Unicode 字符数组”。但 charExtensionValue 指向一个 8 位字符的数组。另外,您正在计算字符串,就好像它是 UTF-16 字符串一样,但事实并非如此。 – 斯图尔特

关于c - 使用 CryptoAPI 将 UTF8String 编码为 ASN1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41064225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com