Dado um item de entrada (N bytes), estou procurando uma função que mapeie isso para uma saída (ainda N bytes). A função deve ter as seguintes qualidades:
- Deve ser 1 para 1, para que todas as entradas sejam mapeadas para alguma saída e para que nenhuma duas entradas seja mapeada para a mesma saída.
- Dado um elemento de saída, deve ser difícil adivinhar a entrada que leva a essa saída, mesmo quando o mapeamento é completamente conhecido.
Existe uma função desse tipo? Onde posso aprender mais?
discrete-mathematics
cryptography
hash
JnBrymn
fonte
fonte
Respostas:
Isso é conhecido como permutação unidirecional . A "permutação" refere-se ao primeiro de seus dois requisitos; o "unidirecional" refere-se ao segundo dos seus dois requisitos. Existem várias construções candidatas para permutações unidirecionais, por exemplo, baseadas no aumento para o terceiro módulo de potência de um módulo RSA ou outros esquemas.
fonte
Você pode querer dar uma olhada no DES ou no AES, eles estão fazendo exatamente o que você deseja. isso para métodos, dependendo de ter uma chave que criptografa / decripta o texto sem formatação. outro método, o uso de chaves duplas (chaves públicas e privadas), atualmente é um método muito usado atualmente e o mais popular é o RSA; ele se aprofunda principalmente em ter uma chave pública conhecida por todos e uma chave privada. deveria saber disso. e se alguém quiser enviar algo, ele o criptografará com sua chave pública (observe que ele não pode decriptografá-lo mais, pois ele é decrépito apenas por sua chave privada). e se você quiser fazer autenticação, poderá enviar algo criptografado por sua chave privada e o destinatário decriptografá-lo com sua chave pública, para que ele tenha certeza de que ela será enviada por você.
mais informações podem ser encontradas aqui:
https://en.wikipedia.org/wiki/RSA_(cryptosystem)
fonte
Você pode tentar o seguinte:
Primeiro, pegue o SHA-256 ou outro hash do seu valor de entrada. Em seguida, use um código básico, algo como o clássico A = C, B = D, C = E ...
A diferença é que você usa o SHA-256 de toda a cadeia de entrada para determinar quanto é deslocado (é A = B, A = C, A = D, etc.)
Nota: Não sou especialista em criptografia e não tenho certeza de quão seguro isso seria.
fonte