【发布时间】:2019-03-23 19:20:02
【问题描述】:
在我的 C++ 项目中,我使用 libsodium 库来创建和验证消息的签名。
为了验证签名,我以这种方式使用 libsodium crypto_sign_open 函数
bool Signature::signatureVerification(const char* content, unsigned char* unsigned_message)
{
bool verified;
unsigned long long unsigned_message_len;
if (crypto_sign_open(unsigned_message, &unsigned_message_len, (const unsigned char *)content, signed_message_len, pk) != 0)
{
verified = false;
std::cout << "incorrect signature " << std::endl;
}
else{
verified = true;
}
//print variable unsigned_message
return verified;
}
如果我“打印”变量unsigned_message,我会收到未签名的消息,后跟来自签名的一些字符。例如,如果消息是“你好”,在签名验证后我会得到“你好...*...”。
现在我使用消息的原始长度(存储在变量unsigned_message_len)来“解决”这个问题,以截断函数返回的消息。
可能是什么问题?为什么在unsigned_message 变量中有一些额外的字符,而不仅仅是原始消息?
谢谢
【问题讨论】: