c++ - 如何获取十六进制格式的共享密钥?
问题描述
所以,我有代码,如下所示:
#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 字符串中的输出十六进制密码?(我真的希望暗地里有我需要的东西,而不是垃圾什么的)
解决方案
所以,解决方案是
std::cout << std::setw(2) << std::setfill('0') << std::hex << static_cast<int>(my_byte_value);
(感谢@Someprogrammerdude)
推荐阅读
- python - 如何将我的时间索引转换为季节性分解?
- datetime - 如何处理 Dart / Flutter 中的 DateTime 溢出?
- php - 如何从键中有空格的关联数组中访问每个单个值
- build - 在 Ubuntu 16.04 上构建最新版本的 MUMPS 5.2.1
- android - 如何从 AppBar 布局或工具栏的底部移除阴影或分隔线?
- sql - SQL为每个部门选择最大销售额的日期
- java - 继承不允许我创建子类的对象?
- typescript - Vue 和 TypeScript 对字符串数组值没有反应
- ios - 键盘可见时如何重绘自定义集合布局?
- php - laravel api补丁方法不读取来自控制器/邮递员的请求