def recvFile(file_name: str, hash_code: str, encoding: str, fromer: str): mkdir(euser.get()) btext = b'' while True: data, addr = client_msg.recvfrom(buffer) btext += data if btext[-7:] == b"__end__": break btext = btext[:-7] hexstr = binascii.b2a_hex(btext) filebyte = cryptocommon.hexstr_to_bytelist(hexstr) hashbytelist = md5hash.hash(filebyte) while fromer not in certificate_list.keys(): # wait for certificate askCert(fromer) time.sleep(0.2) friend_certificate = certificate_list[fromer] friend_pbk = friend_certificate["pbk"] hash_decode = cipher_rsa.numlist_to_decryption_str(hash_code, friend_pbk[0], friend_pbk[1]) hashhexstr = cryptocommon.bytelist_to_hexstr(hashbytelist) if hashhexstr == hash_decode: file = open(euser.get() + "\\" + file_name, 'w') file.write((btext).decode('gb18030')) file.close() text.insert(tkinter.INSERT, "you have received a file from "+fromer+"\n") else: text.insert(tkinter.INSERT, "received some broken files.\n")
def main(): message = "3243F6A8885A308D313198A2E0370734" key = "2B7E151628AED2A6ABF7158809CF4F3C" plaintextbytelist = cryptocommon.hexstr_to_bytelist(message) keybytelist = cryptocommon.hexstr_to_bytelist(key) ciphertextbytelist = aescipher.encrypt(plaintextbytelist, keybytelist, printdebug=True) ciphertexthexstr = cryptocommon.bytelist_to_hexstr(ciphertextbytelist) assert aescipher.decrypt(ciphertextbytelist, keybytelist) == plaintextbytelist print('Plaintext (hex): {}'.format(message)) print('Ciphertext (hex): {}'.format(ciphertexthexstr)) print('Key (hex): {}'.format(key)) print("Plaintext (bytelist): {}".format(plaintextbytelist)) print("Ciphertext (bytelist): {}".format(ciphertextbytelist)) print("Key (bytelist): {}".format(keybytelist))
def sendFile(): friend_certificate = certificate_list[comboxlist_friend.get()] friend_address = tuple(friend_certificate["address"]) file_path = filedialog.askopenfilename() file = open(file_path, 'rb') stext = file.read() hexstr = binascii.b2a_hex(stext) filebyte = cryptocommon.hexstr_to_bytelist(hexstr) hashbytelist = md5hash.hash(filebyte) hashhexstr = cryptocommon.bytelist_to_hexstr(hashbytelist) hashhexstr = cipher_rsa.str_encryption(hashhexstr, pvk[0], pvk[1]) # signature file_name = file_path.split("/")[-1] stream = {"type": "file", "name": file_name, "hash": hashhexstr, "encoding": chardet.detect(stext)["encoding"], "sender": euser.get()} client_msg.sendto(json.dumps(stream).encode(), friend_address) time.sleep(0.8) stext += b"__end__" epoch = len(stext) // buffer res = int(len(stext) - epoch * buffer) print("sending file::::") t = 0 for i in range(epoch): t = i time.sleep(0.1) client_msg.sendto(stext[i * buffer: (i + 1) * buffer], friend_address) if res != 0: client_msg.sendto(stext[t * buffer:t * buffer + res], friend_address)
def _check_hash_function(self, func, cases): global num_test_cases assert isinstance(cases, list) for (expecthash, messagestr) in cases: assert isinstance(expecthash, str) assert isinstance(messagestr, str) msgbytelist = asciistr_to_bytelist(messagestr) actualhashbytelist = func(msgbytelist) expectedhashbytelist = hexstr_to_bytelist(expecthash) assert isinstance(actualhashbytelist, list) self.assertEqual(actualhashbytelist, expectedhashbytelist) num_test_cases += 1
def _check_hash_function(self, func, cases): global num_test_cases assert type(cases) == list for (expecthash, messagestr) in cases: assert type(expecthash) == str assert type(messagestr) == str msgbytelist = asciistr_to_bytelist(messagestr) actualhashbytelist = func(msgbytelist) expectedhashbytelist = hexstr_to_bytelist(expecthash) assert type(actualhashbytelist) == list self.assertEqual(actualhashbytelist, expectedhashbytelist) num_test_cases += 1
def test_hash_function(func, cases): global num_test_cases assert type(cases) == list for (expecthash, messagestr) in cases: assert type(expecthash) == str assert type(messagestr) == str msgbytelist = asciistr_to_bytelist(messagestr) actualhashbytelist = func(msgbytelist) expectedhashbytelist = hexstr_to_bytelist(expecthash) assert type(actualhashbytelist) == list if actualhashbytelist != expectedhashbytelist: raise AssertionError() num_test_cases += 1
def main(): message = "FF00CA9634" msgbytelist = cryptocommon.hexstr_to_bytelist(message) hashbytelist = md5hash.hash(msgbytelist, printdebug=True) hashhexstr = cryptocommon.bytelist_to_hexstr(hashbytelist) print('Message string (hex): {}'.format(message)) print("Message bytelist: {}".format(msgbytelist)) print("Hash bytelist: {}".format(hashbytelist)) print("MD5 hash (hex): {}".format(hashhexstr)) print("") print("-" * 100) print("") message = "the quick brown fox" msgbytelist = cryptocommon.asciistr_to_bytelist(message) hashbytelist = sha256hash.hash(msgbytelist, printdebug=True) hashhexstr = cryptocommon.bytelist_to_hexstr(hashbytelist) print('Message string: "{}"'.format(message)) print("Message bytelist: {}".format(msgbytelist)) print("Hash bytelist: {}".format(hashbytelist)) print("SHA-256 hash (hex): {}".format(hashhexstr))
def main(): message = "FF00CA9634" msgbytelist = cryptocommon.hexstr_to_bytelist(message) hashbytelist = md5hash.hash(msgbytelist, printdebug=True) hashhexstr = cryptocommon.bytelist_to_hexstr(hashbytelist) print(f"Message string (hex): {message}") print(f"Message bytelist: {msgbytelist}") print(f"Hash bytelist: {hashbytelist}") print(f"MD5 hash (hex): {hashhexstr}") print() print("-" * 100) print() message = "the quick brown fox" msgbytelist = cryptocommon.asciistr_to_bytelist(message) hashbytelist = sha256hash.hash(msgbytelist, printdebug=True) hashhexstr = cryptocommon.bytelist_to_hexstr(hashbytelist) print(f'Message string: "{message}"') print(f"Message bytelist: {msgbytelist}") print(f"Hash bytelist: {hashbytelist}") print(f"SHA-256 hash (hex): {hashhexstr}")
[0x2, 0xE, 0xC, 0xB, 0x4, 0x2, 0x1, 0xC, 0x7, 0x4, 0xA, 0x7, 0xB, 0xD, 0x6, 0x1, 0x8, 0x5, 0x5, 0x0, 0x3, 0xF, 0xF, 0xA, 0xD, 0x3, 0x0, 0x9, 0xE, 0x8, 0x9, 0x6, 0x4, 0xB, 0x2, 0x8, 0x1, 0xC, 0xB, 0x7, 0xA, 0x1, 0xD, 0xE, 0x7, 0x2, 0x8, 0xD, 0xF, 0x6, 0x9, 0xF, 0xC, 0x0, 0x5, 0x9, 0x6, 0xA, 0x3, 0x4, 0x0, 0x5, 0xE, 0x3], [0xC, 0xA, 0x1, 0xF, 0xA, 0x4, 0xF, 0x2, 0x9, 0x7, 0x2, 0xC, 0x6, 0x9, 0x8, 0x5, 0x0, 0x6, 0xD, 0x1, 0x3, 0xD, 0x4, 0xE, 0xE, 0x0, 0x7, 0xB, 0x5, 0x3, 0xB, 0x8, 0x9, 0x4, 0xE, 0x3, 0xF, 0x2, 0x5, 0xC, 0x2, 0x9, 0x8, 0x5, 0xC, 0xF, 0x3, 0xA, 0x7, 0xB, 0x0, 0xE, 0x4, 0x1, 0xA, 0x7, 0x1, 0x6, 0xD, 0x0, 0xB, 0x8, 0x6, 0xD], [0x4, 0xD, 0xB, 0x0, 0x2, 0xB, 0xE, 0x7, 0xF, 0x4, 0x0, 0x9, 0x8, 0x1, 0xD, 0xA, 0x3, 0xE, 0xC, 0x3, 0x9, 0x5, 0x7, 0xC, 0x5, 0x2, 0xA, 0xF, 0x6, 0x8, 0x1, 0x6, 0x1, 0x6, 0x4, 0xB, 0xB, 0xD, 0xD, 0x8, 0xC, 0x1, 0x3, 0x4, 0x7, 0xA, 0xE, 0x7, 0xA, 0x9, 0xF, 0x5, 0x6, 0x0, 0x8, 0xF, 0x0, 0xE, 0x5, 0x2, 0x9, 0x3, 0x2, 0xC], [0xD, 0x1, 0x2, 0xF, 0x8, 0xD, 0x4, 0x8, 0x6, 0xA, 0xF, 0x3, 0xB, 0x7, 0x1, 0x4, 0xA, 0xC, 0x9, 0x5, 0x3, 0x6, 0xE, 0xB, 0x5, 0x0, 0x0, 0xE, 0xC, 0x9, 0x7, 0x2, 0x7, 0x2, 0xB, 0x1, 0x4, 0xE, 0x1, 0x7, 0x9, 0x4, 0xC, 0xA, 0xE, 0x8, 0x2, 0xD, 0x0, 0xF, 0x6, 0xC, 0xA, 0x9, 0xD, 0x0, 0xF, 0x3, 0x3, 0x5, 0x5, 0x6, 0x8, 0xB], ] def getHexAscii(text): x1=binascii.hexlify(text.encode()) y1=str(x1,'ascii') return y1 if __name__ == "__main__": pesan = getHexAscii("yonathan") kunci = "133457799BBCDFF1" plaintextbytelist = cryptocommon.hexstr_to_bytelist(pesan) keybytelist = cryptocommon.hexstr_to_bytelist(kunci) print(plaintextbytelist) print(keybytelist) print(encrypt(plaintextbytelist, keybytelist))
_SBOX_INVERSE = [0] * 256 # Also a permutation def _init_sbox(): for i in range(256): j = _reciprocal(i) j = j ^ _rotl8(j, 1) ^ _rotl8(j, 2) ^ _rotl8(j, 3) ^ _rotl8(j, 4) ^ 0x63 assert 0 <= j <= 0xFF _SBOX_FORWARD.append(j) _SBOX_INVERSE[j] = i def getHexAscii(text): x1 = binascii.hexlify(text.encode()) y1 = str(x1, 'ascii') return y1 if __name__ == "__main__": _init_sbox() plaintext = "Two One Nine Two" key = "Thats my Kung Fu" hexAsciiPlainText = getHexAscii(plaintext) hexAsciiKey = getHexAscii(key) hasil = encrypt(cryptocommon.hexstr_to_bytelist(hexAsciiPlainText), cryptocommon.hexstr_to_bytelist(hexAsciiKey), False) print(hasil)
all_passed = True #device name, must be 10 char long #default name device_name = "code name " #read name from file with open("/msg_config.json", "r") as cfg_fp: config_string = cfg_fp.read() config = json.loads(config_string) device_name = config["device_name"] # build key from config key = config["msg_key"] keybytelist = cryptocommon.hexstr_to_bytelist(key) #truncate to 10 characters device_name = device_name[0:10] #pad with spaces to 10 characters dev_size = len(device_name) dev_space = 10 - dev_size device_name += " " * dev_space # ui dimensions header = 16 margin = 0 border = 0 # Release any resources currently in use for the displays