DCPU-16 용 RC4를 작성하고 있지만 시작하기 전에 몇 가지 질문이 있습니다.16 비트 시스템 용 RC4 작성
RC4 알고리즘 :
//KSA
for i from 0 to 255
S[i] := i
endfor
j := 0
for i from 0 to 255
j := (j + S[i] + key[i mod keylength]) mod 256
swap values of S[i] and S[j]
endfor
//PRGA
i := 0
j := 0
while GeneratingOutput:
i := (i + 1) mod 256
j := (j + S[i]) mod 256
swap values of S[i] and S[j]
K := S[(S[i] + S[j]) mod 256]
output K
endwhile
S[]
의 각 요소 대신 예상 0-255의, 0 ~ 65535의 범위에서 갈 수 있도록 내가 16 비트 워드 작업을하고있다. 그리고 K는 0-65535가되어야합니다.이 문제를 해결하기위한 가장 좋은 방법은 무엇입니까?
의 I 참조 옵션 (그리고 그 문제가) 있습니다
- 아직도 실행하는 데 시간이 더 걸릴 것입니다 (사방
Mod 255
를 사용하여 연결된 두 개의 라운드 출력을 채우고 나는 가능한 한 낮게 내 CPB을 유지하려면 여전히S[]
에 대한 길이 255의 배열을 사용하는 동안) - 조정할 RC4 그래서
K
는 (내가 RC4 땜질 실수에 대한 걱정 바로 그래서 암호화를 수행 할 16 비트 숫자가 될 것입니다.)
최선의 선택 방법은 무엇입니까? # 1 할 필요가 있을지도 모르지만, 여기 사람들이 나를 위해 # 3 할 자신감을 심어 줄 수 있기를 바랍니다.
왜 'AND 255'를 사용하지 않습니까? 이것은 꽤 많이 있습니다. – harold
* "(나는 암호를 올바르게하고 싶기 때문에 RC4로 실수를하는 것이 걱정됩니다.") * - 걱정하지 마십시오. 실수를 할 것입니다. 예를 들어, 최선의 노력에도 불구하고, 첫 번째 릴리스가 [타이밍 측면 채널 공격] (http://en.wikipedia.org/wiki/Timing_attack)으로 고통받을 것이라는 점을 보장합니다. 중요한 것을 위해 실제로 이것을 사용하지 않으므로, 괜찮습니다. 이것은 좋은 학습 경험이 될 것입니다. :) –