繁体   English   中英

Solidity:插入符号 ^ 运算符的作用是什么?

[英]Solidity: What does the caret ^ operator do?

我搜索了 solidity 文档,没有关于此的内容:

插入符号 ^ 运算符的作用是什么?

它在这里做什么?

sha3(sha3(valueA) ^ sha3(valueB))

根据https://www.tutorialspoint.com/solidity/solidity_operators.htm (通过 Google,顺便说一句),在许多语言中,它意味着 XOR(异或):

x y  x^y
0 0  0
0 1  1
1 0  1
0 0  1
(1=True; 0=False)

这是一个按位运算,异或(异或): https : //docs.soliditylang.org/en/v0.8.6/types.html

“按位异或是一种二元运算,它采用两个等长的位模式,并对每对对应位执行逻辑异或运算。如果只有一个位为 1,则每个位置的结果为 1,但将为 0如果两者都是 0 或两者都是 1。” https://en.wikipedia.org/wiki/Bitwise_operation#:~:text=A%20bitwise%20XOR%20is%20a,0%20or%20both%20are%201

我遗漏的关键字是“按位”(如 Nathan 提到的)。

So, if, for example,               sha3(valueA)=0x44=0b01000100, and
                                   sha3(valueB)=0x34=0b00110100, then:
(sha3(valueA)=0x44=0b01000100 and sha3(valueB))=0x70=0b01110000

PS有趣的事实:全1的异或是“位翻转”

它是xorexclusive or运算符。 如果输入不同,则 output 为真,否则 output 为假。

  1 xor 1 ==  0 xor 0 = 0
  1 xor 0 ==  0 xor 1 = 1

从这里

XOR 加密算法是一种非常有效但易于实现的对称加密方法。 由于其有效性和简单性,XOR 加密是当今使用的更复杂的加密算法中使用的极其常见的组件。

XOR 加密算法是对称加密的一个示例,其中使用相同的密钥来加密和解密消息。

还有为什么 XOR 用于密码学?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM