【发布时间】:2017-02-20 17:56:27
【问题描述】:
我找不到将 CryptoPP::Integer(从 RSA 密钥生成)转换为 LPCTSTR(我想将密钥存储在注册表中)的正确代码。你能帮帮我吗?
谢谢!
【问题讨论】:
标签: c++ windows integer crypto++
我找不到将 CryptoPP::Integer(从 RSA 密钥生成)转换为 LPCTSTR(我想将密钥存储在注册表中)的正确代码。你能帮帮我吗?
谢谢!
【问题讨论】:
标签: c++ windows integer crypto++
... 将
CryptoPP::Integer(来自 RSA 密钥生成)转换为LPCTSTR(我想将密钥存储在注册表中)。你能帮帮我吗?
应该执行以下操作。 Integer 类在integer.h 中重载operator<<:
Integer n("0x0123456789012345678901234567890123456789");
ostringstream oss;
oss << std::hex << n;
string str(oss.str());
LPCSTR ptr = str.c_str();
Integer 类在使用插入运算符时总是打印后缀。在上面的代码中,由于std::hex,将附加一个h。所以你可能想添加:
string str(oss.str());
str.erase(str.end() - 1);
另一种方法是使用来自misc.h 的函数IntToString<Integer>()。但是,它只适用于窄字符串,不适用于宽字符串。
Integer n("0x0123456789012345678901234567890123456789");
string val = IntToString(n, 16)
IntToString 不打印后缀。但是,需要 hack 才能以大写形式打印字符串(如手册中所示)。
【讨论】:
LP(C)STR 并使用注册表 API 的窄版本,例如 RegGetValueA,它们将负责与 Unicode 的转换。