gmp_xor

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

gmp_xor按位异或

说明

gmp_xor(GMP|int|string $num1, GMP|int|string $num2): GMP

计算两个 GMP 数的按位异或(XOR)。

参数

num1

一个 GMP 对象,一个 int 或一个数值型 string

num2

一个 GMP 对象,一个 int 或一个数值型 string

返回值

一个 GMP 对象。

范例

范例 #1 gmp_xor() 范例

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

$xor3 = gmp_xor($xor1, $xor2);

echo
gmp_strval($xor3, 2) . "\n";
?>

上面的例子将会输出

1011110111000100

添加备注

用户贡献备注 5 条备注

kimcbrowne at hotmail dot com
18 年前
为了不可破解,XOR 加密必须使用完全随机且从不重复使用的密钥。如果你第二次使用密钥,它就会被破解。这可以通过阅读 http://en.wikipedia.org/wiki/One-time_pad. 页面进行确认。

虽然我不是密码学专家,但我理解破译涉及识别模式,并且如果存在足够多的样本供审查,就可以解密使用相同密钥用 XOR 编码的代码。在加密和解密点都维护每个加密的唯一密钥以确保 100% 不可破解,这本身也存在安全问题——密钥存储在哪里以及如何传输到解密点?
bukaj at bukaj dot net
19 年前
XOR 加密是终极加密算法。它无法被破解。它被用于加密隐形潜艇的命令。我不同意下面“小妹妹”的帖子。如果你使用一个与加密消息一样长的密钥(比如从 CD 上记录的空间噪声),那么加密消息也是随机的——在没有密钥的情况下无法解密。在这些条件下,XOR 是有史以来已知的最強加密算法。
patm at pureconnection dot net
20 年前
XOR 加密只有在密钥至少与明文一样大且密钥完全随机的情况下才有效。而且,rand() 不是完全随机的。
mikko at entris dot net
22 年前
逻辑 XOR 可用于加密数据。使用资源 A 作为你的原始文本,使用资源 B 作为密钥。确保使用足够长的密钥,这样密钥不会循环。解密的方式相同,将加密文本作为资源 A,密钥作为资源 B 输入。
greenone
16 年前
以下是一个计算任意(但相同)长度的两个位字符串的 XOR 值的快速替代方法。

<?php
/**
* 位字符串的 XOR 操作
* 位字符串必须具有相同的长度
*
* @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;
}
?>
To Top