作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 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
变量中有一些额外的字符,而不仅仅是原始消息?
谢谢
最佳答案
那是因为您没有空终止符,请尝试在 unsigned_message 之后添加 + 1,无论它是从哪里打印的。您的代码显然会在文本之后打印出随机字符,因为它是“未签名”的,这意味着它没有带符号的数据位值。 + 1 应该终止随机符号。
关于c++ - libsodium crypto_sign_open 返回添加一些字符的未签名消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55317493/
在我的 C++ 项目中,我使用 libsodium 库来创建和验证消息的签名。 为了验证签名,我以这种方式使用 libsodium crypto_sign_open 函数 bool Signature
我是一名优秀的程序员,十分优秀!