提问者:小点点

如何在C++中生成十六进制二进制数据的sha256散列?


我需要一个C++中函数,它生成类似于这个命令在Linux中生成的结果。

echo-n“616161616161616”xxd-r-p sha256sum-b awk‘{print$1}’

这个命令所做的是:给定一个十六进制字符串,将其转换为二进制,并显示二进制数据的sha256散列。

有谁能帮帮我吗?


共1个答案

匿名用户

实际的算法取决于您想要做什么-您可以将十六进制转换为字符串。 我在下面的例子中这样做了。

首先要做的是将字符串转换为二进制,可以通过以下方式实现:

std::string toBin(std::string str){
    int s = str.length();
    std::string bin = ""
    for (int i = 0; i <= n; i++){
        int v = int(s[i]);
        while (val > 0){
            (val % 2)? bin.push_back('1') : bin.push_back('0');
            val /= 2;
        }
    }
    std::reverse(bin.begin(), bin.end());
}

然而,代码的下一部分太长了,我很遗憾地无法将其包含在这个答案中。 但是我会把你链接到一个包含(希望)所有你需要的代码的网站。 http://www.zedwood.com/article/cpp-sha256-function

最美好的祝愿。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(何在|c++|中|生成|十六进制|二进制|数据|sha256|散|列)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?