对于提出一些编程问题,我深表歉意,但我想确保我以加密方式正确使用了这个库。
除了散列签名数据之外,我已经设法实现了 ed25519-donna 。
据我所知,这是散列数据的函数:
void ed25519_hash(uint8_t *hash, const uint8_t *in, size_t inlen);
但我无法弄清楚 *hash 是什么。我相当确定*in
并且inlen
是要散列的数据及其长度。
它是 SHA512 特有的吗?
如何使用 ed25519-donna 进行哈希计算?
程序挂起
我已经使用ed25519-donna-master/ed25519.o
OpenSSL flags 进行了编译-lssl -lcrypto
。密钥生成、签名和验证功能按预期工作。
它运行没有错误,但应用程序挂在这些线上,并且核心没有以 100% 运行,所以我认为它不忙处理:
extern "C"
{
#include "ed25519-donna-master/ed25519.h"
#include "ed25519-donna-master/ed25519-hash.h"
}
#include <openssl/rand.h>
unsigned char* hash;
const unsigned char* in = convertStringToUnsignedCharStar( myString );
std::cout << in << std::endl;
std::cout << "this is the last portion output and 'in' outputs correctly" << std::endl;
ed25519_hash(hash, in, sizeof(in) );
std::cout << hash << std::endl;
std::cout << "this is never output" << std::endl;
如何修改此代码以使其ed25519_hash
正常工作?无论是hash
and in
areunsigned char*
还是uint8_t*
s,它的工作方式都是一样的。
对于uint8_t*
,我使用了以下代码:
uint8_t* hash;
const uint8_t* in = reinterpret_cast<const uint8_t*>(myString.c_str());