reg_A = [''] * 93
reg_B = [''] * 84
reg_C = [''] * 111
for i in [93, 84, 111]:
for j in range(i):
if i == 93:
reg_A[j] = 0
elif i == 84:
reg_B[j] = 0
elif i == 111:
reg_C[j] = 0
reg_C[108] = reg_C[109] = reg_C[110] = 1
for i in range(80): # initializing key
reg_A[i] = 0
reg_B[i] = 0
stream = []
for i in range(70):
# first calculate output bits of every register
Cz = reg_C[110] ^ reg_C[65] ^ (reg_C[108] & reg_C[109])
Ax = reg_A[92] ^ reg_A[65] ^ (reg_A[90] & reg_A[91])
By = reg_B[83] ^ reg_B[68] ^ (reg_B[81] & reg_B[82])
# then calculate first bit of every register
a1 = Cz ^ reg_A[68]
b1 = Ax ^ reg_B[77]
c1 = By ^ reg_C[86]
for x in range(92, 0, -1): # go to 1, because we already have first bit calculated
reg_A[x] = reg_A[x-1]
reg_A[0] = a1
for x in range(83, 0, -1):
reg_B[x] = reg_B[x-1]
reg_B[0] = b1
for x in range(110, 0, -1):
reg_C[x] = reg_C[x-1]
reg_C[0] = c1
stream.append(Ax ^ By ^ Cz)
print reg_A, "FINAL"
print reg_B
print reg_C
print stream, "FINAL STREAM AFTER 70 CLOCKS"
이건데 C언어로 변환 가능해 형들? 내눈으로 보기엔 초기벡터값 이런것도 보이진 않는데 없는거 맞아? 여기에?
변환은 너가 보고 하면되지 굳이 의미를 알지 못해도 5분이면 가능할 듯. C로 짜면 20배는 빨라질듯 하다 cython이라고 python -> c로 변환해주는게 있긴 한데 그거 보면 하루 종일 봐도 무슨 소린지 모를듯.
ㄴ 변환을 해준다고? 그런게 있어?
ㄴ 내가 칼복학해서 C언어 맨땅에서 다시 공부하는 중인데 수업진도는 나가고 과제폭탄에 시험까지 막 덮쳐서 진도를 지금 몇주째 못나가고잇어....ㅠㅠㅠㅠㅠ
파이썬으로 해결한 과제에요?
ㄴ 아녀 C언어로 만들어서 돌아가는 것좀 보고싶은데 어떤식으로 짜야할 지 감이 안잡혀서 찾아보니까 파이썬으로 된게 나오더라구여
첫줄부터 차근차근 해봐라. 일단 저 코드는 쓸데없는 코드가 졸라 많긴 한데. 처음에 size 93, 84, 111인 배열들 0으로 초기화, 70번 루프 돌면서 비트연선(뻘짓)한 결과 stream 이라는 배열에 저장. 딱 이건데 이건 뭐로 바꿔도 쉬움. 자바든 c든..
ㄴ 일단 형들이 차근차근 해보라니까 해보는데 C언어 다시 배운지 얼마안되서 구현이 가능할지 모르겠다..... 으어 프로그래밍의 세계는 험난하구나
trivium 이란 게 뭐에요? 수학이에요?
ㄴ스트림 암호에여