Ir ao conteúdo
  • Cadastre-se

Meu código de criptografia


Posts recomendados

Fiz uma biblioteca para uso de criptografia de textos e arquivos, fiz um programa para exemplificar mas somente texto ainda vou fazer a parte de mídias.

O programa funciona da seguinte maneira:

1 - O usuário entra com uma senha, a mesma sera usada como chave.

2 - O programa vai gerar uma matriz com 256x256 que leva todos os caracteres da tabela ASCII

3 - A senha sera usada para determinar a linha ta matriz.

4 - O texto de entrada ou a cadeia de bytes sera usada para determinar a coluna da matriz.

Segue a classe:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace segurança
{
    public enum Modo { Crypta, Descrypta };
    public class Criptografia
    {
        private List<List<char>> tabela;
        private string key;

        public Criptografia(string key)
        {
            this.key = key;
            GeraTabela();
        }
        private void GeraTabela()
        {
            tabela = new List<List<char>>();
            for (int linha = 0; linha < 256; linha++)
            {
                tabela.Add(new List<char>());
                for (int coluna = 0; coluna < 256; coluna++)
                {
                    int letra = (char)(coluna + 1 + linha);
                    if (letra >= 256)
                        letra = letra - 256;
                    tabela[linha].Add((char)letra);
                }
            }
        }
        public object[] Modifica(object[] alvo, Modo modo = Modo.Crypta)
        {
            int contadorLinha = 0;
            for (int contador = 0; contador < alvo.Length; contador++)
            {
                if (contadorLinha == key.Length)
                    contadorLinha = 0;
                if (modo == Modo.Crypta)
                    alvo[contador] = Encrypta(alvo, contador, contadorLinha);
                if (modo == Modo.Descrypta)
                    alvo[contador] = Descrypta(alvo, contador, contadorLinha);
                contadorLinha++;
                GC.Collect();
            }
            return alvo;
        }
        private object Encrypta(object[] alvo, int contador, int contadorLinha)
        {
            return tabela[key[contadorLinha]][(int)alvo[contador]];
        }
        private object Descrypta(object[] alvo, int contador, int contadorLinha)
        {
            return tabela[key[contadorLinha]].IndexOf((char)alvo[contador]);
        }
    }
}

ja diminui um pouco o código, podem me ajudar? caso tenham algumas duvidas, a ideia de postar aqui é para ensinar. afinal é algo bem simples.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...