Java Biginteger xor шифрование / дешифрование для переполнения стека

Я новичок в PHP, теперь я просто хочу перевести код шифрования / дешифрования java xor в PHP, который используется для транзакций между сервером и клиентом.
Ниже приведен код Java xor:

public static String encrypt(String password, String key) {
if (password == null)
return "";
if (password.length() == 0)
return "";

BigInteger bi_passwd = new BigInteger(password.getBytes());

BigInteger bi_r0 = new BigInteger(key);
BigInteger bi_r1 = bi_r0.xor(bi_passwd);

return bi_r1.toString(16);
}

public static String decrypt(String encrypted, String key) {
if (encrypted == null)
return "";
if (encrypted.length() == 0)
return "";

BigInteger bi_confuse = new BigInteger(key);

try {
BigInteger bi_r1 = new BigInteger(encrypted, 16);
BigInteger bi_r0 = bi_r1.xor(bi_confuse);

return new String(bi_r0.toByteArray());
} catch (Exception e) {
return "";
}
}

Я провел некоторое исследование и нашел некоторую информацию в http://phpseclib.sourceforge.net/documentation/math.html но не могу заставить его работать. Моя версия PHP на сервере 5.4.36. Нужно ли что-то устанавливать или выполнять настройку?

-1

Решение

Получите это работает. Ниже приведен код PHP

function encrypt($string, $key)
{
$bi_passwd = new Math_BigInteger($string, 256);
$bi_r0 = new Math_BigInteger($key);
$bi_r1 = $bi_r0->bitwise_xor($bi_passwd);
return $bi_r1->toHex();
}

function decrypt($string, $key)
{
$bi_confuse = new Math_BigInteger($key);
$bi_r1 = new Math_BigInteger($string, 16);
$bi_r0 = $bi_r1->bitwise_xor($bi_confuse);
return $bi_r0->toBytes();
}
0

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

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