2017-09-23 1 views
2

그래서 임의의 4 바이트가 4 바이트 인 xor random을 시도하고 있습니다. 문제는, 무작위로 ans (xor의 결과)로 변경하고 계속 진행하고 싶습니다. 그래서 기본적으로 랜덤 변수는 처음에는 고정 된 숫자가 될 것이지만 루프가 끝날 때까지 나중에 바뀔 것입니다. 내 코드는 내가 내 생각은Going에서 슬라이스 xoring

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

는, 슬라이스 XOR을 허용하지 않습니다 (연산자^조각에 정의되지 않은)가 계속하지만, 올바른 논리를 갖고있는 것 같아요, 뭔가 내가부터 조각해야 할 것이다 배열을 여러 바이트로 분할하는 것. 어떤 아이디어가이 문제를 해결하는 방법?

+1

암호화 '를 참조하십시오/암호 https://github.com/golang/go/blob/master/src /crypto/cipher/xor.go#L45-L54 당신을 디자인하십시오. – jeevatkm

+0

@jeevatkm 예제의 변수 "a"는 "byte"또는 슬라이스가 아닌 것 같아서, 내 것과 다릅니다. 내가 놓친 게 아니라면? – rullzing

+0

위의 소스 코드 참조 링크에서; 'dst','a','b'는 바이트 슬라이스입니다. – jeevatkm

답변

2

응용 프로그램이 개별 바이트 또는 xter이어야합니다. 이런 식으로 뭔가 :

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

이 설정/xor.go` XOR 바이트 구현

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