PHP md5 преобразование в Coldfusion для CloudTrax

Я конвертирую пример PHP-кода для CloudTrax (это точка доступа Wi-Fi) в ColdFusion. У меня возникла проблема со строкой кода. Два типа данных объединены. Я пытался несколько раз, но не могу заставить его работать. Я не уверен, что php делает внутренне, или он конвертирует данные внутренне, чтобы заставить его работать.

$ hexchall <- двоичный

$ секрет <- строка

PHP

$crypt_secret = md5($hexchall . $secret, TRUE)

CFM

binaryDecode(lcase(hash(hexchall&secret,"MD5")),"hex")

Coldfusion отвечает: Объекты ByteArray не могут быть преобразованы в строки.
Если я использую CharsetEncode() в двоичном коде он больше не соответствует выводу php.

2

Решение

Я не php парень, но я уверен, что вы не можете просто объединить две переменные на стороне CF. Нет, если оба значения не используют одинаковую кодировку. Вместо этого попробуйте декодировать оба значения в двоичный файл, объединить их и затем хэшировать объединенный массив. Я подозреваю, что это то, что PHP делает внутри.

Точный код будет отличаться в зависимости от кодировки ваших строк, но что-то вроде этого должно работать в CF10 +.

CF:

// decode both values into binary
hexchall = binaryDecode("546869732069732062696e617279", "hex");
secret = charsetDecode("this is a secret", "utf-8");
// merge the binary into a single array
// note: arrayAppend will not work with these values
util = createObject("java", "org.apache.commons.lang.ArrayUtils");
mergedBytes = util.addAll(hexchall, secret);
// finally, hash the binary
crypt_secret = lcase(hash( mergedBytes, "md5"));
writeDump(crypt_secret);

PHP:

$hexchall = hex2Bin("546869732069732062696e617279");
$secret = "this is a secret";
$crypt_secret = md5($hexchall. $secret, TRUE);
print_r(bin2hex($crypt_secret));

Результат:

2e7840389862afdc913c51df5f394125
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector