728x90 Sejong University/Symmetric-key cryptography4 CBC mode import sdes #암호화를 위한 simple des import sdes의 정보는 HW3참고 #sdes의 sdes_genkey함수를 사용하여 키 생성 def cbc_genkey(): return sdes.sdes_genkey() #sdes의 sdes_encrypt함수와 XOR함수를 사용해 암호화 진행 def cbc_encrypt(keybits, ivbits, plainbits): result = [] #암호화할 블록 ciphertext = [] #암호문 start = 0 #블록의 시작 index end = 12 #블록의 끝 index while end 2022. 4. 23. Simple DES import random as r #키값 생성을 위한 랜덤모듈 def sdes_genkey(): #키 생성 함수 key = [] #키 for i in range(0, 9): #키의 개수가 9개 key.append(r.randint(0, 1)) #랜덤하게 키를 받음 return key #키 반환 def sdes_encrypt(key, pblock): #암호화 함수 Rblock = pblock[6:] #오른쪽 블록 Lblock = pblock[0:6] #왼쪽 블록 for i in range(0, 3): #simple DES이므로 3번의 사이클로 구성 exRblock = expander(Rblock) #블록 8비트로 확장 usekey = keygenerator(key, i) #8비트 키 생성 result = .. 2022. 4. 23. Classic Cipher import random as r #key를 만들기 위한 랜덤 모듈 import copy as c #LFSR함수에서 key데이터를 복사하기 위한 모듈 def capital(alpha): #대문자 검사를 위한 함수 if alpha >= ord('A') and alpha 2022. 4. 23. Histogram for Character Frequency #문자열의 알파벳 개수를 센 후 데이터를 딕셔너리 형태로 출력하는 함수 def char_freq(string): ret_dic = {} #결과값 string = string.lower() #입력받은 문자열의 대문자 알파벳을 모두 소문자로 변환 print(string) #올바르게 입력되었는지 확인 length = len(string) #문자열의 길이 for i in range(0, length): #문자열의 길이만큼 반복 if ord('a') = ord(string[i]): #만약 해당 문자가 알파벳이라면 if string[i] in ret_dic: #딕셔너리에 이미 등록된 문자라면 ret_dic[string[i]] += 1 #문자의 개수 1증가 else: #딕셔너리에 등록되어 있지 않다면 ret_dic[.. 2022. 4. 23. 이전 1 다음 728x90