RC4 CryptoAPI для порта PHP - PullRequest
       27

RC4 CryptoAPI для порта PHP

0 голосов
/ 21 декабря 2018

Я пытаюсь эмулировать работающую процедуру шифрования / дешифрования CryptoAPI RC4 в PHP.При этом я столкнулся с проблемой при попытке воссоздать процесс CryptCreateHash + CryptHashData.Я пытаюсь понять, как CryptoAPI упорядочивает / комбинирует необработанные данные при многократном вызове CryptHashData.

Я пытался объединить два входных значения с ключом различными способами, а также изменить порядок байтов, но я не уверен, как эмулировать точные шаги, которые выполняет 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);

Итак, вопрос в том, как эмулировать этот шаг и сопоставить хэш-ключ C5 CryptoApi MD5 в php. Мне не удалось расшифровать с помощью этого ключа или сопоставить ключ php с C ++экспортированный ключ

...