Итак, у меня есть код, подобный следующему:
#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;
}
Но в выводе я получаю это:
Как я могу получить в выходной шестнадцатеричный секрет в строке ANSI? (Я действительно надеюсь, что в тайне лежит то, что мне нужно, а не мусор или что-то)