コード例 #1
0
def s_box(input, s_box_index):
    if len(input) != 6:
        raise Exception("Wrong dimension")

    row = convert_bin_array_to_dec([input[0], input[5]])
    col = convert_bin_array_to_dec(input[1:5])
    return convert_to_bin_array(s_box_array[s_box_index][row][col], 4)
コード例 #2
0
ファイル: text.py プロジェクト: datdev98/cryptography
def convert_text_to_bin_array(text):
    result = []
    byte_str = text.encode('utf-8')

    for b in byte_str:
        result.extend(convert_to_bin_array(b, 8))

    return result
コード例 #3
0
def encrypt_one_block(plain_text, key):
    initial_permutation_result = initial_permutation(plain_text)

    keys = round_key_generator(convert_to_bin_array(key, 64))
    rounds_result = rounds(initial_permutation_result, keys)

    cipher_text = final_permutation(rounds_result)

    return cipher_text
コード例 #4
0
def decrypt_text(text, key):
    bin_array = convert_to_bin_array(text, 0)
    blocks_input = convert_bin_array_to_block(bin_array, 64)

    block_output = []
    for block in blocks_input:
        block_output.append(decrypt_one_block(block, key))

    bin_array = convert_block_to_bin_array(block_output)

    return convert_bin_array_to_text(bin_array)
コード例 #5
0
def main():
    print(convert_to_bin_array('0x18ca18ad', 32))
    print(expansion_p_box(convert_to_bin_array('0x18ca18ad', 32)))