【发布时间】:2014-02-24 21:36:03
【问题描述】:
对于提出一些编程问题,我深表歉意,但我想确保我以加密方式正确使用了这个库。
我已经设法实现了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 标志 -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 和in 是unsigned char* 还是uint8_t*s,它的工作方式都是一样的。
对于uint8_t*,我使用了这个代码:
uint8_t* hash;
const uint8_t* in = reinterpret_cast<const uint8_t*>(myString.c_str());
【问题讨论】: