我尝试将ASN.1序列“ AgER
”转换为CryptoPP::Integer
。
#include <crypto++/asn.h>
#include <iostream>
int main(int, char*[])
{
std::string base64{"AgER"};
CryptoPP::StringSource s{base64, true};
CryptoPP::BERSequenceDecoder d{s};
CryptoPP::Integer i;
i.BERDecode(d);
std::cout << i.ConvertToLong() << std::endl;
}
这会引发类型为CryptoPP::BERDecodeErr
的异常,并显示消息“ BER decode error
”。
各种ASN.1工具可以毫无问题地解析字符串:https://lapo.it/asn1js/#AgER
我发现Crypto ++需要二进制数据,而不是Base64编码。因此,我之前必须对此进行解码。