Запутался в использовании хеш-функций в PHP для генерации хеш-файла XML - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь написать PHP-эквивалент кода JAVA:

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
private static final String ALGORITHM = "HmacSHA256";
private static String generateHash(final InputStream is, final int iteration, final String key) throws IOException,
NoSuchAlgorithmException, InvalidKeyException {
Mac sha256_HMAC;
sha256_HMAC = Mac.getInstance(ALGORITHM);
final SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(), ALGORITHM);
sha256_HMAC.init(secret_key);
byte[] bytesBuffer = new byte[2048];
int bytesRead = -1;
while ((bytesRead = is.read(bytesBuffer)) != -1) {
sha256_HMAC.update(bytesBuffer, 0, bytesRead);
}
byte[] digestValue = sha256_HMAC.doFinal();
for (int i = 0; i < iteration; i++) {
sha256_HMAC.reset();
digestValue = sha256_HMAC.doFinal(digestValue);
}
final String generatedHash = Base64.encodeBase64String(digestValue);
return generatedHash;
}

До сих пор я генерировал следующий код, который не генерирует ожидаемый вывод:

$ihash = hash_init('SHA256',1,$key);
$filehandle  =fopen('path/to/xml/file','r');
while ($buffer=fread($filehandle,"2048")) {
hash_update($inithash, $buffer);
}

$hash = hash_final($inithash);
for($i=0;$i<$iteration;$i++)
{
$inithash=hash_init('SHA256');
$inithash = hash_final($inithash);
}

echo base64_encode($inithash);

Но этоне генерирует ожидаемый результат, я хотел бы поделиться xml-файлом после запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...