DCPcrypt SHA512与PHP openssl_digest不匹配

时间:2013-09-12 16:28:36

标签: php c++ delphi-xe2 c++builder

使用项目,我需要在C ++程序和PHP中使用字符串的SHA512哈希。

我正在使用带有DCPCrypt库的RAD Studio XE2 C ++构建器(版本DCPcrypt v2 Beta 3 - 推荐)。

这是我的C ++代码,所以非常简单的测试程序包含Edit1(文本输入)和Edit2(哈希输出)和一个按钮:

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Edit2->Text = SHA512( Edit1->Text );

}
//---------------------------------------------------------------------------
String __fastcall TForm1::SHA512(String input){

    if (input.Length() ) {
        TDCP_sha512 *sha512 = new TDCP_sha512(this);
        unsigned char array[192];

        String output = "";

        sha512->Init();
        sha512->UpdateStr( Edit1->Text );
        sha512->Final((void*)array);

        for (int i = 0; i < 64; ++i) {
            output += IntToHex(array[i], 2);
        }

        sha512->Free();

        return output.LowerCase();
    }
}

当我在Edit1字段中输入“TEST”并按下按钮时,我将得到哈希结果: 0881048f3717a7cc363ca50e2dd7229efceb30786f0dc33b1b2cbcc3929055d00ed594f96127156aab01f30b6f6d28b100cbd7975e168bc39e50251d96c6beef

当我在PHP代码中尝试相同时:

<?PHP
    echo openssl_digest('TEST', 'sha512');
?>

这会给我完全不同的结果: 7bfa95a688924c47c7d22381f20cc926f524beacb13f84e203d4bd8cb6ba2fce81c57a5f059bf3d509926487bde925b3bcee0635e4f7baeba054e5dba696b2bf

如果我在两端比较字符串“1”,我可以产生匹配,但在添加更多字母后,C ++代码不会显示相同的结果。 使用一些我在网上发现的“在线”sha512表单时,我得到的结果与PHP代码相同。

有什么想法吗?

0 个答案:

没有答案