{'fraction_non_alphanumeric': 0.021289537712895375, 'fraction_numerical': 0.0012165450121654502, 'mean_word_length': 5.254752851711027, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
An Interactive Tool for Learning Linear and Differential Cryptanalysis of SPNs

Introduction Linear and differential cryptanalysis have existed for years as a set of tools to establish a metric of resiliency for cryptographic ciphers utilizing the substitution-permutation network (SPN) design, a category of cryptographic cipher in which many popular ciphers, such as the Advanced Encryption Standard (AES). This is typically an involved process with many manual steps, often written specifically for the SPN being analyzed, with minimal reusable or generalized code. As of this writing, there do not exist any tools to make the process interactive for an arbitrary SPN; the few interactive, automated tools that do exist are designed around a particular predefined cipher. The goal of this project is to create Maledict [1] , a Java application inspired and influenced by the tutorial by Howard Heys [4] , with a user interface in Swing in order to provide an interactive experience in the linear and differential cryptanalysis of arbitrary, user-designed substitution-permutation networks. As a part of the interactive process I seek to provide visualizations of various features, such as the pseudo-linear " path " followed through the network by a given bit. I also intend to report meaningful results obtained using the tool, such as linear approximation/difference distribution tables or subkey biases from experimental results. It is my intention that this project provide a foundation for an effective academic tool, which can be used by students to better understand and observe the processes of linear and differential cryptanalysis.