Desde que você criou a criptografia, uma das coisas legais que os bons algoritmos criptográficos fazem é tornar quase impossível adivinhar o algoritmo exato (isto é, a função mais a chave) que foi usado para criptografar algo mesmo se você tiver acesso à entrada. e saída. Mesmo se você tiver um pequeno número de amostras (ou seja, alguns bilhões) de entradas e saídas correspondentes, você não poderá prever a saída gerada por uma nova entrada.
Em outras palavras, o que você quer fazer não pode ser feito, a menos que você forneça ao programa todas as entradas e saídas possíveis. Você precisa saber mais sobre o algoritmo do que apenas as entradas e saídas.
EDIT: Existem algoritmos como redes neurais - e alguns outros - que podem ser "treinados" com um determinado conjunto de entradas e saídas. Por exemplo, uma rede neural pode ser treinada para marcar fotos de pássaros em um conjunto de imagens aleatórias. Estes soam como a solução simples e perfeita, mas o mundo não é assim tão fácil. Antes de treinar uma rede neural, ela deve ser estruturada para corresponder ao problema que precisa resolver e, nesse caso, requer informações adicionais sobre o que o algoritmo que ela imita, caso contrário, o treinamento da rede falhará.