簡體   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