C++调用openssl使用sha256,并取结果前64位作为uint64

125 篇文章 5 订阅
5 篇文章 0 订阅

参考:unix - Generate sha256 with OpenSSL and C++ - Stack Overflow

代码如下:

#include "openssl/sha.h"
#include <string>
#include <iostream>
using namespace std;
inline uint64_t sha256(const string str) {
    unsigned char hash[SHA256_DIGEST_LENGTH];
    SHA256_CTX sha256;
    SHA256_Init(&sha256);
    SHA256_Update(&sha256, str.c_str(), str.size());
    SHA256_Final(hash, &sha256);

    uint64_t result = 0;
    for (int i = 0; i != 8; ++i) {
        result |= hash[i] << (56 - i * 8);    // += could have also been used
    }
    return result;
}
int main(void) {
    cout << "start hash test" << endl;
    string test = "test";
    uint64_t result = sha256(test);
    cout << "hash result is:" << result << endl;
    return 0;
}

编译运行:

-> % g++ -o test test.cpp -I/opt/ssl/include/ -L/opt/ssl/lib/ -lcrypto 
-> % ./test
start hash test
hash result is:18446744072095727077
参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

淡竹云开

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值