RC4 CryptoAPI至PHP端口

时间:2018-12-21 14:00:52

标签: php c++ openssl cryptoapi

我正在尝试在PHP中模拟有效的CryptoAPI RC4加密/解密例程。这样做时,尝试重新创建CryptCreateHash + CryptHashData进程时遇到了问题。我试图弄清楚多次调用CryptHashData时CryptoAPI如何排序/合并原始数据。

我试图以不同的方式将两个输入值连接到键,以及反转字节顺序,但是我不确定如何模拟CryptHashData执行的确切步骤。

例如:

// I create the hash variable, then hash a binary string using CryptHashData and then hash a secret using CryptHashData again.

BYTE baKeyRandom[10] = {87,253, ...};
::CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hSaveHash);
::CryptHashData(hSaveHash, baKeyRandom, (DWORD)sizeof(baKeyRandom), 0);
::CryptHashData(hSaveHash, (LPBYTE)T2CW(pszSecret), (DWORD)_tcslen(pszSecret) * sizeof(WCHAR), 0); 

Then in PHP I'm trying to do something similar

// server key secret
$secret = 'ABCDEF-G...';

// random byte string
$random = pack('c*', 87,253, ...);

// simple concat does not work to generate an MD5 key
$key = md5($random.$secret);

所以问题是如何模拟此步骤并匹配php中的C ++ CryptoApi MD5哈希密钥,我无法使用此密钥进行解密或将php密钥与C ++导出的密钥进行匹配

0 个答案:

没有答案