gmp_xor

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_xorПобитовое исключающее ИЛИ

Описание

GMP gmp_xor ( GMP $a , GMP $b )

Вычисляет побитовое исключающее ИЛИ (XOR) двух GMP чисел.

Список параметров

a

Или ресурс resource GMP числа в PHP 5.5 и ранее, или объект класса GMP в PHP 5.6 и новее, или числовая строка, при условии, что ее можно преобразовать в число позже.

b

Или ресурс resource GMP числа в PHP 5.5 и ранее, или объект класса GMP в PHP 5.6 и новее, или числовая строка, при условии, что ее можно преобразовать в число позже.

Возвращаемые значения

Ресурс resource GMP числа в PHP 5.5 и ранее, или объект класса GMP в PHP 5.6 и новее.

Примеры

Пример #1 Пример использования gmp_xor()

<?php
$xor1 
gmp_init("1101101110011101"2);
$xor2 gmp_init("0110011001011001"2);

$xor3 gmp_xor($xor1$xor2);

echo 
gmp_strval($xor32) . "\n";
?>

Результат выполнения данного примера:

1011110111000100

Коментарии

The logical XOR can be used for encrypting data. Use resource A as your original text and resource B as the key. Be sure to use long enough key so that the key doesn't loop. Decryption works the same way, input encrypted text as res A and key as res B.
2002-07-15 05:33:13
http://php5.kiev.ua/manual/ru/function.gmp-xor.html
XOR encryption only works if the key is at liest the same size as the plaintext, and the key is perfectly random. And no, rand() is not perfectly random.
2004-01-07 19:22:44
http://php5.kiev.ua/manual/ru/function.gmp-xor.html
XOR encryption is an ultimate encryption algorithm. It can't be be broken. It is used to encrypt stealth submarine's orders. I cannot agree with "kid-sister" post below. If you use vast key (as long as encrypted message) which is random (space noise recorded on a cd), the encrypted message is also radnom - impossible to decrypt without key. Under those conditions, XOR is strongest encryption algorithm ever known.
2005-03-28 20:38:48
http://php5.kiev.ua/manual/ru/function.gmp-xor.html
To be unbreakable XOR encryption must have a key that is totally random and is never re-used.  If you use a key a second time, it can be broken.  This can be confirmed by reading the page at http://en.wikipedia.org/wiki/One-time_pad.

Although I am not an expert on cryptography, I understand that decyphering involves recognizing patterns and that it would be possible to decrypt code that was encoded using XOR with the same key if there were enough samples to examine.  Maintaining unique keys for each encryption at both encryption and decryption points to ensure 100 percent unbreakability has security problems of its own - where and how are the keys stored and how are they transmitted to the decryption points?
2005-10-03 22:48:23
http://php5.kiev.ua/manual/ru/function.gmp-xor.html
Автор:
here's a fast alternative to compute the xor-value of two bitstrings of an arbitrary (but same) length.

<?php
/**
 * xor-op for bitstrings of arbitrary length
 * bitstrings must have same length
 * 
 * @param string $o1
 * @param string $o2
 * @return string
 */
function bitxor($o1$o2) {
   
$xorWidth PHP_INT_SIZE*8;
   
$o1 str_split($o1$xorWidth);
   
$o2 str_split($o2$xorWidth);
   
$res '';
   
$runs count($o1);
    for(
$i=0;$i<$runs;$i++)
       
$res .= decbin(bindec($o1[$i]) ^ bindec($o2[$i]));       
    return 
$res;
}
?>
2008-07-02 15:26:07
http://php5.kiev.ua/manual/ru/function.gmp-xor.html

    Поддержать сайт на родительском проекте КГБ