gpt4 book ai didi

c++ - 散列重定向的 DOS 输出

转载 作者:行者123 更新时间:2023-11-30 04:12:36 26 4
gpt4 key购买 nike

我正在尝试使用来自 openssl 的 SHA1 散列命令行参数的结果,它工作正常。问题是我需要将这个结果与我从 SHA1 PHP 函数获得的其他结果进行比较,而我得到的结果是不一样的。当我尝试使用修复参数进行散列时,让我们说“警察”,结果是一样的,所以我认为问题是我从 DOS 控制台获得的结果是用 Unicode 或 ASCII 编码的。

这就是我得到DOS结果的方式

std::string exec(char* cmd) {
FILE* pipe = _popen(cmd, "r");
if (!pipe) return "ERROR";
char buffer[128];
std::string result = "";
while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
_pclose(pipe);
return result;
}

一切正常,我能够散列从结果中获得的数据。

std::string tag = exec_result.substr (found+2,11);
SHA1((unsigned char *)tag.c_str(), strlen(tag.c_str()), temp);

问题是我从 PHP SHA1 函数得到的散列值不一样,所以我想可能是两个函数的实现不一样,但后来我尝试了带有固定参数的 SHA1 C++ 函数和结果是相等的,所以我认为不同之处可能在于我从 DOS 控制台获得的输出的字符集。有人可以帮帮我吗

最佳答案

看看这是否与 newline conventions 有关. UNIX 使用 LF 而 DOS/Windows 使用 CR/LF

首先在没有换行符/换行符的单个字符串上尝试它,如果可行,添加逻辑以“标准化”您的数据..

关于c++ - 散列重定向的 DOS 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19770185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com