Anak Krakatoa Defined Crypt

Categoria: Componentes
Categoria Pai: Delphi
Acessos: 6562
Imagem meramente ilustrativa

História (22/11/2004)

Um dia precisei de um algoritmo simples de criptografia para usar em um de meus programas, com o intuito de encriptar strings de texto. Como não tive paciência para criar um, resolvi procurar na Internet. Achei o que eu estava procurando, mas ocorreu uma coisa muito inesperada... O algoritmo era genérico, ou seja, ele manipulava a sequência de texto informada e fazia um cálculo simples, alterando os caracteres um a um. Isso seria o ideal, mas infelizmente ele utilizava todos os 256 caracteres do conjunto ASCII, quer dizer, ele também incluía em seus cálculos todos os caracteres de controle (DEL, CR, LF, ACK, etc.). Descobri isso quando encriptava uma string que seria salva em um INI. Quando eu a desencriptava ela sempre vinha pela metade e dava um puta erro! Foi então que eu percebi o que estava acontecendo: A String que eu estava processando gerava após ser encriptada um caractere especial (CR). Como nos INIs se salvam uma linha de cada vez, eu só estava salvando a string até o CR e o que vinha após ele era sumariamente ignorado. Foi então que eu lembrei do JavaScript! Em JS existem muitos exemplos pra fazer criptografia de strings e, além disso, como o JS não é uma linguagem compilada seria muito mais fácil encontrar o que eu procurava.

Este componente, portanto, foi INTEIRAMENTE convertido e otimizado a partir do Script VIRGENERE ENCRYPTION criado por Francisco Ryan Tolmasky (Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.). Esse Script usa uma tabela fixa (Array de Strings) contendo pares de caracteres comuns em meu idioma, nunca saindo desse intervalo, ou seja, as funções só usam esses caracteres para criptografar ficando de fora caracteres indesejados! O objetivo do Anak Krakatoa Defined Crypt é portanto codificar um texto usando sua própria tabela interna de pares de caracteres. Isso evita o aparecimento de caracteres indesejados no texto codificado, porém PODE TORNAR O PROCESSO DE (DES)CRIPTOGRAFIA MUITO LENTO mesmo em computadores rápidos, mas nada que impeça o uso do componente.

Outras característica adicionada por mim foram a limitação de caracteres utilizados e a possibilidade de gerar uma criptografia assimétrica. A primeira característica utiliza 3 tabelas de criptografia diferentes, uma completa (256 caracteres), uma sem os caracteres de controle (244 caracteres) e uma "segura" com apenas os 96 caracteres básicos da tabela ASCII. Já a criptografia assimétrica gera senhas aleatórias diferentes para criptografia e descriptografia, o que torna o conteúdo cifrado mais seguro para ser transferido em meios eletrônicos.

Métodos de TKRKDefinedCrypt

Eventos de  TKRKDefinedCrypt

Propriedades de TKRKDefinedCrypt

O CryptTable Maker

O Anak Krakatoa DefinedCrypt utiliza tabelas de caracteres ASCII fixos que são usados na criptografia. Os caracteres ASCII são incluídos aos pares na sua representação hexadecimal como elementos dos vetores "CryptTableFull", "CryptTableNoControl" e "CryptTableSafe" dentro de CryptTable.inc.

Todos os 256 caracteres ASCII são usados pelo vetor "CryptTableFull". Já o vetor "CryptTableNoControl" não utiliza os caracteres de controle ASCII (0 a 31) enquanto o vetor "CryptTableSafe" possui apenas os caracteres básicos do conjunto ASCII sem os caracteres de controle (0 a 31).

O Crypt Table Maker tem por finalidade gerar cada um desses 3 vetores com uma combinação única de pares de bytes, alterando 100% a criptografia e possibilitando uma segurança muito maior.

A utilização do Crypt Table Maker é simples e é altamente recomendável que cada usuário (usuário do componente) crie seu próprio conjunto de tabelas de criptografia (não se deve usar a tabela que vem junto com o componente por motivos de segurança). Abra o executável e explore suas funcionalidades. Após gerar os 3 vetores de criptografia, salve o arquivo resultante por cima do arquivo CryptTables.inc, localizado na pasta inc do componente e reinstale o componente no Delphi. Guarde uma cópia do arquivo CryptTables.inc em local seguro, do contrário não será mais possível realizar a descriptografia.

Direitos autorais

Este componente está sendo disponibilizado de forma gratuita e com código-fonte completo. É permitido que ele seja modificado de qualquer forma, mas derivações do mesmo não podem ser vendidas. Tais derivações, se distribuídas, precisam manter-se gratuitas, com código-fonte completo e fazer referência a versão original (esta que eu desenvolvi) por meio de uma menção a esta página incluindo um link para ela. Qualquer desrespeito a estas normas simples tornará você um grandessíssimo filho da puta que merece morrer empalado por mil "negões da picona".

Se este componente for usado ou mencionado em algum outro artigo, seja ele virtual ou não, a regra de menção a mim e ao componente original também se aplica, bem como a maldição do "negão", caso você a ignore.

Garantias

Apesar de eu utilizar este componente com sucesso em minhas implementações eu não posso garantir seu pleno funcionamento em todos os ambientes e plataformas, por isso, use-o por sua conta e risco. Eu sempre recomendo que se teste bastante um componente antes de usá-lo e eu só não fiz isso porque não possuo uma grande quantidade de plataformas e ambientes. Considere inicialmente seu uso para fins didáticos e somente o use em implementações comerciais quando estiver certo de que ele está funcionando como você imagina que ele deve funcionar. Não me responsabilizo por qualquer tipo de dano que esse componente possa causar, seja ele material ou moral.

Peço que leia com muita atenção a seção "O Crypt Table Maker" deste artigo, pois ela explica algo a respeito de impossibilidade de descriptografia. Não me responsabilizo a respeito desta impossibilidade, já que está bem explicado nesta seção que você deve fazer backup das tabelas de criptografia (CryptTables.inc).

Histórico de versões


  Arquivos anexados  
Arquivo Descrição Tamanho Modificado em
Access this URL (https://sourceforge.net/projects/anak-krakatoa-defined-crypt/files/Anak%20Krakatoa%20Defined%20Crypt.rar/download) AKDC Anak Krakatoa Defined Crypt 6.0 0.1 KB 21/08/2017 às 23:59