问题标签 [bitwise-xor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
22073 浏览

c# - 什么是 C# 独占或 `^` 用法?

谁能用一个很好的例子来解释这个运算符?

我知道这个运算符是什么。我的意思是一个现实生活中的例子。

0 投票
2 回答
2238 浏览

c - 处理具有不同密钥大小和字节序的异或

我正在通过一个小的 C 文件进行 xor 解码,并且遇到了字节序问题......我对如何解决它们有点困惑。这真的是我第一次在 C 中深入地玩这个按位运算。

如果我使用单字节异或键并将几个异或编码值拾取到 uint8_t 指针中,我的基本代码就可以正常工作。遍历每个字节,将其与键异或,并将结果存储在解码的字节数组/缓冲区中,然后将其打印回控制台。

但是,如果我尝试一个两字节的异或键,那么字节序就会开始妨碍。我目前将密钥插入 uint32_t,因为我不打算处理大于 32 位的异或密钥。在 little-endian 系统上,xor 键0xc39f存储为0x9fc3. 如果我一次播放一个字节,要解码的字节是大端的,但是如果我尝试一次播放两个字节(与 xor 键的大小相同),它们也会被翻转为小端)。

我很想#include <byteswap.h>然后打电话bswap_32()。但是,虽然这适用于小端,但它可能对大端产生相反的效果。我假设我需要丑陋的#ifdef 仅bswap_32()用于小端拱门。我认为,必须有一种更便携的方式才能使其工作。

随机样本字符串:


如果我用两字节(uint16_t)指针回放异或编码的缓冲区,我会得到这个(通过基本的 printf):


并使用四字节指针(uint32_t):



我希望上面的内容可以改为两字节指针:

和四字节指针:


想法?



编辑:有接受者吗?当前的答案不足以满足我的需求。

0 投票
1 回答
312 浏览

python - 求解按位代数中的未知数

假设我有 3 个字节,XY 和 Z。

X XOR Y 结果为 Z。

我知道 X 和 Z 是什么,但我不知道 Y 是什么,所以我正在编写一个快速脚本来解决这个问题。

虽然,我什至不知道我将如何开始。我手工做了几个,这只是一个一个地比较每一位的问题,但是我怎么能在 python 中做到这一点呢?我求解 Y 的程序似乎不够清楚。

因为我只需要实际使用这样的东西,所以写它或者只使用为我做这件事的东西就足够了。

0 投票
9 回答
10011 浏览

php - PHP中的异或加密

我是 Xor 加密的新手,我在使用以下代码时遇到了一些问题:

当我运行它时,它适用于普通字符串,如“dog”,但它仅部分适用于包含数字的字符串,如“12345”。

展示...

xor_this('dog')='UYV'

xor_this('123')=''

注意到xor_this( xor_this('123') )= '123' 也很有趣,正如我所期望的那样。我很确定问题出在我对按位运算符的模糊理解中,或者可能是 PHP 处理包含数字的字符串的方式。我敢打赌那里有聪明的人确切地知道这里出了什么问题。谢谢。

编辑#1:这不是真正的“加密”。我想混淆是正确的术语,这就是我正在做的事情。我需要从用户那里传递一个包含不重要数据的代码,而他们不能轻易地篡改它。他们正在离线完成一项定时活动,并通过此代码将他们的时间提交到在线记分牌。离线活动将混淆他们的时间(以毫秒为单位)。我需要编写一个脚本来接收此代码并将其转换回包含他们时间的字符串。

0 投票
1 回答
232 浏览

c++ - 整数和位数组之间的按位运算

假设我有一个由位、一和零组成的 c++ 数组,并且我希望将它与一个整数进行按位异或,并将结果作为整数得到。最快的方法是什么?

0 投票
2 回答
6479 浏览

bit-manipulation - 顺序异或运算中的优先顺序

我有以下表达式来计算奇偶校验位:

AB0E 异或 73C9 异或 D46A 异或 06E3

这将如何评估?是吗:

(((AB0E XOR 73C9) XOR D46A) XOR 06E3)

或者是:

(AB0E 异或(73C9 异或(D46A 异或 06E3)))

0 投票
1 回答
538 浏览

c++ - 我在做什么导致该程序的输出不一致?

所以我做了一个基本的异或加密程序,它要求输入密码字符串并用它来播种ISAAC

然后它要求对字符串进行加密,并将其与 ISAAC 的输出进行异或。出于某种原因,这会为相同的两个字符串产生不稳定的结果。这是我的代码的问题,还是它被输出到控制台?我是否正在做一些事情让它变得非常明显?这是我的代码,我使用的是 ISAAC 网站上提供的模板类:

编辑:没关系,所有这些只是我愚蠢

所以我尝试了 David Schwartz 给我的修复方法,但是当我尝试对密码进行哈希处理时,它又停止工作了。我用来散列输入字符串的函数是:

0 投票
3 回答
179 浏览

c - 可以撤消一系列 XOR 吗?

我已经在纸上进行了几次测试,但似乎无法在任何地方找到确认。

假设我有几个唯一的 8 位数字,我将它们异或在一起并将其存储在某个地方。如果我之后,将这些相同的数字与存储的数字进行异或,我总是会得到 0 吗?

基本上我有一个条件的枚举,其中一些需要在操作发生之前得到满足。作为一个健全性检查,并确保我以后不会意外返回并破坏此代码,我正在考虑将所需的条件一起异或,然后在满足条件时将条件与该存储值异或。然后在操作发生之前,确保我们回到 0。

所以像

我知道它并非完美无缺,因为在正确的条件下,我最终可能会在某个地方处于中间 0 状态。但它更多的是供我自己使用,以防止将来意外地将这些条件之一移动到操作之下。

0 投票
2 回答
1884 浏览

c++ - C ++中结构的按位异或

我想要做的是在 C++ 中对同一结构的两个变量进行按位异或,即

其中 D 是一个包含字符串、int、...的数组。

但是,编译器抱怨(这里使用整数数组作为索引,意思是 D[dInd[u]]^=...):

有谁知道我如何纠正这条线以实现按位异或?

任何提示都非常感谢。在此先感谢,干杯 - 亚历克斯

0 投票
5 回答
1608 浏览

javascript - 与 C++ 相比,Javascript 中的按位异或

我正在将一个简单的 C++ 函数移植到 Javascript,但似乎我在 Javascript 处理位运算符的方式上遇到了问题。

在 C++ 中:

Obfuscate("test") 产生临时整数值

混淆(“测试”)产生字符串值

在 Javascript 中:

obfuscate("test") 产生临时整数值

obfuscate("test") 产生字符串值

现在,我意识到有很多线程指出 Javascript 将所有数字视为浮点数,并且按位运算涉及临时转换为 32 位 int。

这真的不是问题,除了我在 Javascript 中混淆并在 C++ 中反转,并且不同的结果并不真正匹配。

如何将 Javascript 结果转换为 C++ 结果?有一些简单的班次吗?