C++ 如何获取十六进制格式的共享机密?

C++ 如何获取十六进制格式的共享机密?,c++,openssl,C++,Openssl,我有这样的代码: #include <openssl/dh.h> #include <iostream> const char* userA_PrivateKey = "6e11 ... const char* userA_PublicKey = "365b ... const char* userB_PublicKey = "16db ... const char* p = "00a7 ... const char* g = "2"; int main() {

我有这样的代码:

#include <openssl/dh.h>
#include <iostream>
const char* userA_PrivateKey = "6e11 ...
const char* userA_PublicKey = "365b ...
const char* userB_PublicKey = "16db ...
const char* p = "00a7 ...
const char* g = "2";


int main()
{

    DH* dh = DH_new();

    BN_dec2bn(&dh->g, g);
    BN_hex2bn(&dh->p, p);
    BN_hex2bn(&dh->priv_key, userA_PrivateKey);

    BIGNUM* pubKeyUserB = NULL;
    BN_dec2bn(&pubKeyUserB, userB_PublicKey);

    //Compute the shared secret
    int secret_size;
    unsigned char* secret;
    //
    int dhSize = DH_size(dh);
    //
    secret = reinterpret_cast<unsigned char*>(OPENSSL_malloc(sizeof(unsigned char) * dhSize));

    if (0 > (secret_size = DH_compute_key(secret, pubKeyUserB, dh)))
    {
        std::cerr << "Error[33]!\n", -1;
    }

    std::cout << '\n' << secret << '\n';

    return 0;

}
#包括
#包括
const char*userA_PrivateKey=“6e11…”。。。
const char*userA_PublicKey=“365b…”。。。
const char*userB_PublicKey=“16db…”。。。
const char*p=“00a7…”。。。
常量字符*g=“2”;
int main()
{
DH*DH=DH_new();
十二亿欧元(&dh->g,g);
20亿欧元(&dh->p,p);
BN_hex2bn(&dh->priv_key,userA_PrivateKey);
BIGNUM*pubKeyUserB=NULL;
BN_Dec20亿(&pubKeyUserB,userB_PublicKey);
//计算共享秘密
int秘密大小;
未签名字符*秘密;
//
int dhSize=DH_尺寸(DH);
//
secret=reinterpret_cast(OPENSSL_malloc(sizeof(unsigned char)*dhSize));
如果(0>(secret\u size=DH\u compute\u key(secret,publikeyuserb,DH)))
{
因此,解决方案是

std::cout << std::setw(2) << std::setfill('0') << std::hex << static_cast<int>(my_byte_value);

std::你能知道“字符串”中数据的长度吗(
dhSize
),所以只需迭代每个字节并以任何你想要的格式显示它。为什么你要将
const\u cast
void*
转换为
void*
?@Someprogrammerdude我有一个更大的字符串,但它仍然是象形文字
std::cout