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;
}
}