파이썬에서 DES 알고리즘을 연구 중이다.파이썬 이진 문자열 시프트
기능 중 하나 인 Fiestle 기능에서 사이퍼를 가져 오기 위해 XOR 요소를 사용해야합니다.
C0가 1,111,000011001100101010101,111
D0는 내가 가진 출력은 0101010101100110011110001,111
c0_d0=[]
for i in range(1):
t=[]
t.append(C0)
t.append(D0)
c0_d0.append(t)
#print c0_d0
def str_to_bin(strr,shifts):
for i in range(1,17):
temp=[]
for j in range(1):
temp.append(int(c0_d0[i-1][0])<<1)
temp.append(int(c0_d0[i-1][1])<<1)
c0_d0.append(temp)
return c0_d0
입니다 :
내가 파이썬에서 작업을 이동 수행 할 수있는 방법이 있나요은 아래 내가 노력 코드입니다 like :
요소를 비트 이동하여 얻은 이진 문자열로 원합니다. 즉 f 첫 번째 요소 쌍은 이전 요소 쌍을 시프트하여 얻어지며 다음 요소 쌍은 이전 요소에 의해 얻어진다. 등등 0 번째 인덱스 요소가 주어진다.
예 C0는 1,111,000011001100101010101,111 D0가 0101010101100110011110001,111
C1은 1,110000110011001010101011110 같다 C0 < < 1이어야이다
D1은 1,010101011001100111100011110
이진 문자열을 이동 하시겠습니까? 나는 크기가 28 비트라고 가정합니다 (크기를 지정하지 않았습니다, 파이썬에서는 int 내부 표현에 의존 할 수 없습니다). 이 경우'C1 = C0 [1 :] + "0"'을 시도하십시오. 그러나 당신의 질문은 정말로 불분명합니다. –
이진 연산을 수행하려면 정수 또는 바이트 수를 사용하십시오 (정수 목록). 문자열 연산을 사용하는 것이 편안하거나 효과적이지 않습니다. –