Title: RES: [java-list] Criptografia

Ola Márcio

> alguém teria um exemplo simples de criptografia em Java ? Preciso
> encriptografar uma string.
> Se alguém puder me ajudar, fico muito agradecido.
>

Segue abaixo uma classe que efetua criptografia. No meu site (albb.tk) há mais informações.

Boa Sorte e a Paz do Senhor,
 
[:>} Alan Candido ><> linux user # 290664 ICQ 117513933
"Almanaque BRÓDÃO & bródinho" http://albb.tk
                               ___
   .[====].[====].[====].[___].]@|-Y\_
_____o__o___o__o___o__o___o_o___O_ooo_\_______________
"Antigamente as naus eram de madeira e os homens de ferro,
hoje em dia elas são de aço e os homens de palha."



package dw.util;

import java.util.Vector;

/*
// #############################################################################
// # NOTAS SOBRE DIREITO AUTORAL                                               #
// # Direitos Autorais (c) 1997, 1998, 1999 Alan Candido                       #
// # Todos os direitos reservados                                              #
// #                                                                           #
// # Esta rotina, pode ser utilizada, modificada, copiada e distribuída por    #
// # qualquer pessoa, em qualquer tempo, desde que esta nota de direito auto-  #
// # ral e demais comentários sejam mantidos, sem modificações de conteúdo,    #
// # forma ou apresentação.                                                    #
// #                                                                           #
// # Por usar este código, você concondar com estas normas e reconhece Alan    #
// # Candido como legal detentor dos direitos autorais e compromete-se a inse- #
// # rir uma nota, na caixa "Sobre..." ou equivalente, dos aplicativos que fi- #
// # zerem uso desta, com o endereço do meu "site"(1).                         #
// #                                                                           #
// # Alan Candido não se resposabilizam pelo uso deste ou por problemas que    #
// # este causar a seus usuários, devido a mal uso, uso indevido ou erros de   #
// # qualquer natureza. Fica claro, que não existe nenhum tipo de garantia,    #
// # implicita ou não no uso deste.                                            #
// #                                                                           #
// # A venda, distribuição ou qualquer forma de comercialização deste, por     #
// # terceiros, é expressamente proibida. Aqueles que infrigirem estas normas  #
// # e leis de direito autoral ficará sujeito as sanções e penalidades legais, #
// # podendo o inflator responder civil e criminalmente.                       #
// #---------------------------------------------------------------------------#
// # Sugestões, comentários ou melhorias efetuadas serão bem vindas. Passando  #
// # a fazer parte da versão oficial e você de nossa equipe de colaboradores.  #
// #---------------------------------------------------------------------------#
// # Caso voce encontre algum erro (bug), favor entrar em contato, por e-mail, #
// # relatando a versão, o erro e em que condições ocorreu, para que possamos  #
// # efetuar a correção.                                                       #
// #---------------------------------------------------------------------------#
// # (1) Almanaque BRÓDÃO & bródinho                                           #
// #     http://albb.tk                                                        #
// # (2) Nosso e-mail - [EMAIL PROTECTED]                                  #
// #############################################################################
// # Versão # Autor/Data   # Comentários                                       #
// #############################################################################
// # 0.0.1  # Alan Candido # Implementação das funçoes de Criptografia         #
// #        # 15.02.99     #                                                   #
// # 0.0.2  # Alan Candido # Conversão de Delphi para Java                     #
// #        # 13.05.02     #                                                   #
// #############################################################################
*/
public class ACCripto
{
        static String aMinus[] = new String[26];
        static String aMaius[] = new String[26];

        /**
         * Cripto
         *
         * Criptografa um texto usando uma senha.
         * @param senha, string, senha que deverá ser utilizada no processo
         * @param texto, string, texto a ser processado
         * @return String processada.
        */
        static public String cripto(String senha, String texto)
        {
                return vigenere(true, senha, texto);
        }

        /**
         * Decripto
         *
         * Descriptografa um texto usando uma senha.
         * @param senha, string, senha que deverá ser utilizada no processo
         * @param texto, string, texto a ser processado
         * @return String processada.
        */
        static public String decripto(String senha, String texto)
        {
                return vigenere(false, senha, texto);
        }

        /**
         * Vigenere
         *
         * Criptografa ou descriptografa strings, usando o método de Vigenère.
         * @param cripto, boolean que indica se é para criptografar ou descriptografar
         * @param senha, string, senha que deverá ser utilizada no processo
         * @param texto, string, texto a ser processado
         * @return String processada.
        */
        static private String vigenere(boolean cripto, String senha, String texto)
        {
                String cRet = "";

                if (senha.length() != 0)
                {
                        senha = senha.toUpperCase();
                        aMaius[0] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                        aMaius[1] = "BCDEFGHIJKLMNOPQRSTUVWXYZA";
                        aMaius[2] = "CDEFGHIJKLMNOPQRSTUVWXYZAB";
                        aMaius[3] = "DEFGHIJKLMNOPQRSTUVWXYZABC";
                        aMaius[4] = "EFGHIJKLMNOPQRSTUVWXYZABCD";
                        aMaius[5] = "FGHIJKLMNOPQRSTUVWXYZABCDE";
                        aMaius[6] = "GHIJKLMNOPQRSTUVWXYZABCDEF";
                        aMaius[7] = "HIJKLMNOPQRSTUVWXYZABCDEFG";
                        aMaius[8] = "IJKLMNOPQRSTUVWXYZABCDEFGH";
                        aMaius[9] = "JKLMNOPQRSTUVWXYZABCDEFGHI";
                        aMaius[10] = "KLMNOPQRSTUVWXYZABCDEFGHIJ";
                        aMaius[11] = "LMNOPQRSTUVWXYZABCDEFGHIJK";
                        aMaius[12] = "MNOPQRSTUVWXYZABCDEFGHIJKL";
                        aMaius[13] = "NOPQRSTUVWXYZABCDEFGHIJKLM";
                        aMaius[14] = "OPQRSTUVWXYZABCDEFGHIJKLMN";
                        aMaius[15] = "PQRSTUVWXYZABCDEFGHIJKLMNO";
                        aMaius[16] = "QRSTUVWXYZABCDEFGHIJKLMNOP";
                        aMaius[17] = "RSTUVWXYZABCDEFGHIJKLMNOPQ";
                        aMaius[18] = "STUVWXYZABCDEFGHIJKLMNOPQR";
                        aMaius[19] = "TUVWXYZABCDEFGHIJKLMNOPQRS";
                        aMaius[20] = "UVWXYZABCDEFGHIJKLMNOPQRST";
                        aMaius[21] = "VWXYZABCDEFGHIJKLMNOPQRSTU";
                        aMaius[22] = "WXYZABCDEFGHIJKLMNOPQRSTUV";
                        aMaius[23] = "XYZABCDEFGHIJKLMNOPQRSTUVW";
                        aMaius[24] = "YZABCDEFGHIJKLMNOPQRSTUVWX";
                        aMaius[25] = "ZABCDEFGHIJKLMNOPQRSTUVWXY";

                        for (int nInd = 0; nInd < aMaius.length; nInd++)
                                aMinus[nInd] = aMaius[nInd].toLowerCase();

                        int nKey;
                        String cSenha;
                        int nPos;

                        nKey = 0;
                        cSenha = senha; //uppercase

                        for (int nInd = 0; nInd < texto.length(); nInd++)
                        {
                                char cAux = texto.charAt(nInd);
                                if ((cAux >= 'a' && cAux <= 'z') || (cAux >= 'A' && cAux <= 'Z'))
                                {
                                        if (cripto)
                                        {
                                                if (cAux >= 'a' && cAux <= 'z')
                                                {
                                                        cRet += aMinus[cAux - 'a'].charAt(senha.charAt(nKey) - 'A');
                                                } else
                                                {
                                                        cRet += aMaius[cAux - 'A'].charAt(senha.charAt(nKey) - 'A');
                                                }
                                        } else
                                        {
                                                String cLetras;
                                                for (int nRow = 0; nRow < aMinus.length; nRow++)
                                                {
                                                        cAux = senha.charAt(nKey);
                                                        cAux -= 'A';
                                                        if ((texto.charAt(nInd) >= 'A') && (texto.charAt(nInd) <= 'Z'))
                                                        {
                                                                cLetras = aMaius[nRow];
                                                        } else
                                                        {
                                                                cLetras = aMinus[nRow];
                                                        }
                                       
                                                        if (cLetras.charAt(cAux) == texto.charAt(nInd))
                                                        {
                                                                cRet += cLetras.charAt(0);
                                                                break;
                                                        }
                                                }
                                        }
                                        nKey++;
                                        if (nKey == senha.length())
                                        {
                                                nKey = 0;
                                        }
                                } else
                                {
                                        cRet += cAux;
                                }
                        }
                } else
                {
                        cRet = texto;
                }
                return cRet;
        }
}

------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------

Responder a