Intereting Posts
синтаксическая ошибка, неожиданный $ end в PHP, и я уже проверил '}' использование regex для обертывания изображений в тегах Что делает C # при приведении типа письма к int? PHP. Есть ли переносимая версия PHPUnit? PHP служит MP4 – Chrome «Предварительные заголовки показаны / запрос еще не закончен» ошибка Рекурсивно цикл каждого пути массива PHP – Сортировка многомерного массива другим массивом Как получить кол-во комментариев в Disqus? Вызов функции-члена функции () для не-объекта при вставке данных с использованием PHP mySQL simpleHTMLDOM Процесс FastCGI превысил настроенный тайм-аут активности на общем хостинге PHP Предупреждение: Неизвестно: произошла ошибка при закрытии оператора в Unknown в строке 0 Предупреждение при вызове mysqli_error () Как пройти каталог, рекурсивный возврат полного пути в PHP? Как использовать getimagesize () с $ _FILES ? как получить клиентский путь для файла с расширением

ColdFusion эквивалентен PHP Unpack и SHA1

Вот моя проблема. В PHP есть две функции, которые мне трудно реплицировать в ColdFusion.

1) Функция распаковки PHP, которая позволяет вам форматировать вывод определенным образом. Один из вариантов формата – «H», который обозначает «Hex string, high nibble first» – Как я могу воспроизвести это в ColdFusion?

Это то, что у меня есть до сих пор …

<cfscript> function stringToBinary( String stringValue ){ var base64Value = toBase64( stringValue ); var binaryValue = toBinary( base64Value ); return( binaryValue ); } function stringToHex( String stringValue ){ var binaryValue = stringToBinary( stringValue ); var hexValue = binaryEncode( binaryValue, "hex" ); return( lcase( hexValue ) ); } </cfscript> 

Таким образом, я не могу понять, что нужно указать высокий уровень в реализации выше (также, я не писал эту холодную флюеру, это любезно предоставлено Бен Наделем).

Во-вторых, в PHP существует функция SHA1 для хеширования … есть аргумент для этой функции, которая является логическим аргументом для «Если для опции raw_output установлено значение« ИСТИНА », тогда команда sha1 вместо этого возвращается в необработанном двоичном формате с помощью длина 20 , иначе возвращаемое значение будет шестнадцатеричным числом в 40 символов. " Итак, моя Coldfusion, чтобы имитировать это, просто использует функцию Hash () и указывая, что она использует «SHA-1», а затем преобразует ее в двоичную … но как бы я правильно ограничил ее «до 20» точно так же PHP делает?

Я знаю, что это связано с тем, что я уже много лет останавливался на этих двух проблемах … Любая помощь очень ценится.

используя функцию Hash () и указав ее на использование «SHA-1», а затем преобразуя ее в двоичную … но как бы я правильно ограничил ее «до 20»,

Вам не нужно ничего делать. SHA1 производит 160 бит . Бинарный результат всегда будет 20 байтов, или 40 символов, закодированных как шестнадцатеричные (два символа на каждый байт).

  hashString = hash("Something wicked this way comes", "sha1"); hashBinary = binaryDecode( hashString, "hex"); writeOutput(" String / len("& len(hashString) &")"); writeOutput(" Binary / arrayLen("& arrayLen(hashBinary) &")"); 

«H», который означает «Hex string, high nibble first», указывает, чтобы указать высокий глыб в реализации выше

Есть ли какая-то конкретная причина, по которой вы считаете, что вы должны сделать что-то особенное / дополнительное? Из того, что я прочитал, типичная функция, используемая для генерации шестнадцатеричного кода в PHP, то есть bin2hex , по умолчанию имеет высокий начальный уровень, как и CF. Помимо того факта, что CF преобразует результаты в верхний регистр, результаты идентичны. Можете ли вы указать конкретный пример того, где отличаются результаты PHP и CF?

PHP:

 echo bin2hex("Green Onions"); // result: 477265656e204f6e696f6e73 

CF

 writeDump( binaryEncode(charsetDecode("Green Onions", "utf-8"), "hex") ); // result: 477265656E204F6E696F6E73