c++ - c++ OPENSSL中错误的SHA1
问题描述
有人可以告诉我我做错了什么吗?我正在尝试为“12345”打印 SHA1 哈希,但它显示错误,我无法弄清楚代码中的问题是什么
int main() {
string smth = "12345";
unsigned char hash[SHA_DIGEST_LENGTH];
SHA_CTX sha1;
SHA_Init(&sha1);
SHA_Update(&sha1, smth.c_str(), smth.length());
SHA_Final(hash, &sha1);
stringstream ss;
for (int i = 0; i < SHA_DIGEST_LENGTH; i++)
{
ss << hex << setw(2) << setfill('0') << (int)hash[i];
}
cout << ss.str() << endl; }
我得到的哈希值:
f7e507be49c187214406fd2556302ba47d535780
正确的哈希:
8cb2237d0679ca88db6464eac60da96345513964
解决方案
SHA_* 函数计算 SHA-0 和。用 SHA1_* 替代方法替换所有函数以计算 SHA-1。
推荐阅读
- excel - 如何根据另一列中的重复项修改列并在 Excel 中保留唯一值
- python - 创建具有不同名称和数字长度的变量
- c - 控制台不记录鼠标滚轮事件
- python - 将按钮连接到函数时出现问题(PyQT5)
- git - 如何知道 Apache Spark 的底层发生了什么(来自代码)?
- laravel - 为什么在 whereHas 为假的情况下加载模型?
- python - 遍历robotframework中无序列表中的所有列表项
- git - 是否可以在本地强制执行签名提交?
- eslint - ESlint 如何强制声明新行?进行非法内联声明?
- windows-10-desktop - 如何解决 Windows 10 Autounattend.xml 中的异步命令?