xor运算符在PHP和Visual Basic中的工作方式不同

我在使用xor运算符时遇到了一些麻烦.

我有一个visual basic应用程序,它具有以下功能:

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

password是函数接收的字符串,CadenaEncriptacion是这个常量:

Private Const CadenaEncriptacion As String = "eNcRiPtAcIoNmUyChUlAyGuAyDeLpArAgUaYeNcRiPtAcIoNmUyChUlAyGuAyDeLpArAgUaYeNcRiPtAcIoNmUyChUlAyGuAyDeLpArAgUaYeNcRiPtAcIoNmUyChUlAyGuAyDeLpArAgUaY"

我需要将函数转换为PHP,我通过这种方式转换该行:

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

PHP中的ord函数和vb中的asc在两种语言中都给出相同的值,但是在XOR运算符中,numeroCaracter在PHP和VB中具有不同的值…

在php中,numeroCaracer始终是每个字符的ord值,在vb中,asc函数给我其他值.

谢谢!

解决方法:

因为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));
上一篇:2022HWS硬件安全冬令营线上选拔赛部分wp


下一篇:Python中__init__.py详解