Você necessita guardar informação sensível como senhas "de forma segura"? Para isso você decidiu usar criptologia reversível com uma chave(sal) e algoritmo personalizados?
A classe deste post escrita em PHP oferece uma proposta que pode te inspirar em uma solução para este caso proposto.
A classe a seguir é um abstract. Seus métodos possuem visibilidade privada ou protegida e são todos estáticos. Ela é a principal abstração do nosso objeto pois fornece os apenas métodos básicos a ele.
Note que no código acima para decriptar uma cifra o sal deve ser o mesmo usado para encriptar.
A seguir estamos propondo uma classe mais especializada que faz algum teste nas propriedades e exibe mensagens (básicas) de acordo com o erro. Ela utiliza apenas um método com visibilidade pública para a entrada de dados e para a escolha de ações(métodos) e outro para definição de um sal pelo usuário. Note que ela também usa um sal pré configurado na constante de classe salt.
Perceba nas classes acima a adoção de um certo padrão que estou implementando/desenvolvendo/testando pouco a pouco e que talvez seja umas das bases de um modesto framework próprio para uso pessoal( quando e se conseguir um emprego para comprar um PC :( ), mas isso é outra "istorinha". Caso conheças algum padrão semelhante ou que lembre este por favor, me informe. Como disse anteriormente: ainda estou desenvolvendo.
E finalmente segue um exemplo de uso do conjunto de classes (na verdade do objeto).
Considerações extras:
Claro que você notou que o tamanho da string resultante(cifra) é 3 vezes maior que o tamanho da string de entrada(texto plano). Isso é um problema?
Penso que se você for usar strings relativamente grandes, poderás ter em mãos, dependendo da situação um entrave quanto ao espaço em disco disponível se o mesmo for modesto, mas acho que para campos relativamente pequenos e/ou em sistemas modestos como senhas ela deve dar conta do proposto problema caso o numero de registros seja também pequeno.
Nunca se esqueça que o nível de segurança da cifra resultante irá depender especialmente da complexidade, aleatoriedade e randomicidade do sal (salt) escolhido e que a informação original só poderá ser recuperada (usando essa classe), se o sal for o mesmo usado para cifrá-la. Estas exigências também são validas quanto a um algoritmo subsequente a este e/ou não.
As mensagens de erro e algumas coisas a mais que não estão tão explicitas eu deixo para você configurar e pesquisar sobre. Com isso, viso, um pouco de exercício de aprendizagem para os menos experimentados. Creio estar pensando de forma correta em incitar vossos poderes de raciocínio.
Espero sinceramente que você faça bom uso desta ideia meu querido leitor imaginário numero único.
Nenhum comentário:
Postar um comentário
Nos reservamos o total direito de publicar ou não os seus comentários sem quaisquer justificativas.