将CryptoPP :: Integer转换为LPCTSTR

时间:2017-02-20 17:56:27

标签: c++ windows integer crypto++

我找不到合适的代码将CryptoPP::Integer(从RSA密钥生成)转换为LPCTSTR(我想将密钥存储在注册表中)。你能帮帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

...将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类始终打印后缀。在上面的代码中,由于h,将追加 std::hex 。所以你可能想要添加:

string str(oss.str());
str.erase(str.end() - 1);

另一种方法是使用misc.h中的IntToString<Integer>()函数。但是,它只适用于窄字符串,而不适用于宽字符串。

Integer n("0x0123456789012345678901234567890123456789");
string val = IntToString(n, 16)

IntToString不会打印后缀。但是,需要hacks以大写字母打印字符串(如手册中所示)。