Оператор xor работает по-разному в PHP и Visual Basic - PullRequest
0 голосов
/ 15 января 2019

У меня проблемы с оператором xor.

У меня есть приложение Visual Basic, которое имеет функцию с этой строкой:

numeroCaracter = Asc(password.Substring(contador, 1)) Xor Asc(CadenaEncriptacion.Substring(contador, 1))

пароль - это строка, полученная функцией, а CadenaEncriptacion - это константа:

Private Const CadenaEncriptacion As String = "eNcRiPtAcIoNmUyChUlAyGuAyDeLpArAgUaYeNcRiPtAcIoNmUyChUlAyGuAyDeLpArAgUaYeNcRiPtAcIoNmUyChUlAyGuAyDeLpArAgUaYeNcRiPtAcIoNmUyChUlAyGuAyDeLpArAgUaY"

Мне нужно перевести функцию в PHP, я перевел эту строку следующим образом:

$numeroCaracter = ord(substr($password, $contador, 1)) xor ord(substr($CadenaEncriptacion, $contador, 1));

Функция ord в PHP и Asc в vb дают одинаковые значения в обоих языках, но NumberroCaracter имеет различное значение в PHP и VB с помощью оператора XOR ...

В php NumberroCaracer всегда является значением ord для каждого символа, в vb функция asc дает мне другое значение.

Спасибо!

1 Ответ

0 голосов
/ 15 января 2019

Как и в php xor имеет меньший приоритет, чем = ваш код интерпретируется как:

($numeroCaracter = ord(substr($password, $contador, 1))) xor ord(substr($CadenaEncriptacion, $contador, 1));

Итак, $numeroCaracter получает значение ord(substr($password, $contador, 1)). Добавьте скобки или используйте оператор ^ вместо xor:

$numeroCaracter = ord(substr($password, $contador, 1)) ^ ord(substr($CadenaEncriptacion, $contador, 1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...