2017-09-23 34 views
2

所以我試圖xor隨機,這是4字節,每四個字節的東西。事情是,我想隨機改變爲ans(這是xor的結果),然後繼續前進。所以基本上這個隨機變量在第一次是一個固定的數字,但隨後會改變,直到循環結束。我的代碼似乎有正確的邏輯,不過,我不斷收到 (操作^不是在片定義)x03在切片

random := 4 bytes 
for j:=0;j<len(something);j+=4{ 
ans:=something[j:j+4]^random 
random=ans 
} 

我的猜測是,切片不允許XOR,和一些將不得不片,因爲我很多種將數組分割成多個字節。任何想法如何解決這個問題?

+1

參考'加密/密碼/ xor.go' XOR字節執行https://github.com/golang/go/blob/master/src /crypto/cipher/xor.go#L45-L54並設計你的。 – jeevatkm

+0

@jeevatkm示例中的變量「a」似乎不是「字節」或切片,這使得它與我的不同。除非我錯過了什麼? – rullzing

+0

在上面的源代碼參考鏈接中; 'dst','a','b'是一個字節片。 – jeevatkm

回答

2

應用程序應該異或單個字節。事情是這樣的:

var random [4]byte 
for i, b := range something { 
    random[i&3] ^= b // xor b on element of random 
} 

這臺

random[0] = random[0]^something[0]^something[4] .... 
random[1] = random[1]^something[1]^something[5] ... 
... and so on 
+0

我其實是指4個字節,而不是整數4.對不起,以前並不清楚。我編輯了這個問題 – rullzing

+0

完美的工作!謝謝 – rullzing