A method for securely comparing data to a file of known classification, comprising: extracting a plurality of byte n-grams from a training set of data; using the plurality of byte n-grams extracted from the training set of data to train a neural network to determine a probability of occurrence of any byte n-gram, wherein the neural network comprises at least one embedding model layer configured to output an array of values; receiving data to be processed; extracting a plurality of byte n-grams from the data to be processed; and after training the neural network, using the neural network to process the data to be processed based, at least in part, on the plurality of byte n-grams extracted from the data to be processed, wherein processing the data to be processed comprises comparing the data to be processed to a file having a known classification; wherein comparing the data to be processed to a file having a known classification comprises: generating a hash of the data to be processed; and comparing the hash of the data to be processed to a hash of the file having the known classification to determine a similarity score that indicates a degree of similarity between the hash of the data to be processed and the hash of the file having the known classification; wherein generating the hash of the data to be processed comprises: analyzing a plurality of arrays of values output by the embedding model layer to determine, for each array position, a maximum value and a minimum value across the plurality of arrays; and for each array position, determining a first byte n-gram that resulted in the maximum value and determining a second byte n-gram that resulted in the minimum value; and combining the first byte n-gram and the second byte n-gram for each array position to generate the hash of the data to be processed. extracting a plurality of byte n-grams from a training set of data; using the plurality of byte n-grams extracted from the training set of data to train a neural network to determine a probability of occurrence of any byte n-gram, wherein the neural network comprises at least one embedding model layer configured to output an array of values; receiving data to be processed; extracting a plurality of byte n-grams from the data to be processed; and after training the neural network, using the neural network to process the data to be processed based, at least in part, on the plurality of byte n-grams extracted from the data to be processed, wherein processing the data to be processed comprises comparing the data to be processed to a file having a known classification; wherein comparing the data to be processed to a file having a known classification comprises: generating a hash of the data to be processed; and comparing the hash of the data to be processed to a hash of the file having the known classification to determine a similarity score that indicates a degree of similarity between the hash of the data to be processed and the hash of the file having the known classification; generating a hash of the data to be processed; and comparing the hash of the data to be processed to a hash of the file having the known classification to determine a similarity score that indicates a degree of similarity between the hash of the data to be processed and the hash of the file having the known classification; wherein generating the hash of the data to be processed comprises: analyzing a plurality of arrays of values output by the embedding model layer to determine, for each array position, a maximum value and a minimum value across the plurality of arrays; and for each array position, determining a first byte n-gram that resulted in the maximum value and determining a second byte n-gram that resulted in the minimum value; and combining the first byte n-gram and the second byte n-gram for each array position to generate the hash of the data to be processed. analyzing a plurality of arrays of values output by the embedding model layer to determine, for each array position, a maximum value and a minimum value across the plurality of arrays; and for each array position, determining a first byte n-gram that resulted in the maximum value and determining a second byte n-gram that resulted in the minimum value; and combining the first byte n-gram and the second byte n-gram for each array position to generate the hash of the data to be processed.