Criptografia

13 respostas
S

Sou novato e gostaria de saber como faço para fazer a implementação de uma critografia??? através de função???
não tenho nem a noção de como começar… sou “nivel macaco…” mas tenho vontade de aprender…
Aguardo um help

13 Respostas

C

Seja bem vindo!!

Eu fiz um programa q cripitografa!! É bem simples!!
Ai vai o código:

// Exercicio 4.31 pag 186
/* Aplicativo q le um numero em uma caixa de dialogo
 * com 4 digitos e os cripitografa
 */

import javax.swing.JOptionPane;
public class Cripitografa {
   public static void main( String[] args ) {

      String entrada;

      int x ;
      int digito1;
      int digito2;
      int digito3;
      int digito4;

      entrada = JOptionPane.showInputDialog( " ! Digite o numero de 4 digitos a ser criptografado ! " );
      x = Integer.parseInt( entrada );

      digito1 =  ( ( x / 1000 ) + 7 ) % 10;
      digito2 =  ( ( ( x % 1000 ) / 100 ) + 7 ) % 10;
      digito3 =  ( ( ( x % 100 ) / 10 ) + 7 ) % 10  ;
      digito4 =  ( ( x % 10 ) + 7 ) % 10 ;


      JOptionPane.showMessageDialog( null,
        " Número cripitografado = " + digito3 + digito4 + digito1 + digito2, " ! Número Original ! " + x ,
        JOptionPane.INFORMATION_MESSAGE );
      System.exit( 0 );
   }
}

Qualquer coisa q vc nao entendeu no código vc posta de novo q eu te explico em detalhes.

Espero q tenha ajudado!!

Abracao e te +

S

Caro ratinho,
eu quero criptografar String e sem tamanho definido… mas valeu …
se tiver um outro bizu pode falar!!!

M

…creio q este link te sirva de alguma ajuda:

http://java.sun.com/products/jce/index.jsp

…talvez a melhor referencia sobre este assunto em java! :slight_smile:

S

Meu ingles é muito pequeno… parao siteda sun…rsrs
mas valeu

C

Sapper, se vc quer iniciar no mundo da criptografia com seriedade eu recomendo duas leituras básicas no assunto para que vc posso se interirar do que seja efetivamente criptografia.
O primeiro livro é o “O Livro dos Códigos” de Simon Singh (existe uma resenha dele aqui no nosso portal. Depois de lê-lo vc pode passar para “Criptografia e Segurança - Guia oficial RSA” este livro é bem mais técnico de descreve em detalhes os métodos criptográficos mais utilizados hoje, inclusive com uso de assinatura digital e certificaos digitais.
Sem estas leituras básicas é difícil vc partir para a programação JAVA com criptografia, vc pode até manusear alguns métodos da API JCE (no endereço indicado pelo Matheus) mas será difícl de implementar uma boa criptografia. Tenha em mente que criptografar uma texto (como o que vc pretende fazer) não é apenas “embaralhar” as letras (ou os caracteres ou até mesmo os bytes), tem mais coisa envolvendo criptografia.
Abraço

G

sapper_rj espero que isso te ajude no primeiro try eu encripto o dado utilizando o algoritmo de criptografia Blowfish e dentro do finally eu desencripto os dados. O ideal é vc gravar em um arquivo o objeto "SecretKeySpec skeySpec" utilizando a classe ObjectOutputStream para guardar a chave e para recuperar com ObjectInputStream. Espero ter ajudado.

/*
 * Created on 03/04/2004
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package br.te;



import javax.crypto.*;
import javax.crypto.spec.*;
import java.io.*;

public class teste {
     public static void main(String[] args){
       byte[] encrypted = null;
       SecretKeySpec skeySpec=null;
       try{
			
         KeyGenerator kgen = KeyGenerator.getInstance("Blowfish");
         SecretKey skey = kgen.generateKey();
          byte[] raw = skey.getEncoded();
          skeySpec = new SecretKeySpec(raw, "Blowfish");
          Cipher cipher = Cipher.getInstance("Blowfish");
          cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
          encrypted = cipher.doFinal("oi".getBytes());
          System.out.println(encrypted.toString());
		
    }catch(Exception e){
          e.printStackTrace();
    }finally{
        try{
          byte[] desencrypted= null;
          KeyGenerator kgen = KeyGenerator.getInstance("Blowfish");
          SecretKey skey = kgen.generateKey();
          byte[] raw = skey.getEncoded();
          //SecretKeySpec skeySpec = new SecretKeySpec(raw, "Blowfish");
          Cipher cipher = Cipher.getInstance("Blowfish");
          cipher.init(Cipher.DECRYPT_MODE, skeySpec);
          if(encrypted!=null){
             desencrypted =cipher.doFinal(encrypted);
          }
          System.out.println(new String(desencrypted, "UTF-8"));
       }catch(Exception e){
          e.printStackTrace();
						
       }
   }
 }
}
D

eae…
to tentando usar esse algoritmo num JSP mas nao ta rolando…
olha o erro q ta dando…

eu fiz esse 3 imports tb…

<%@ page import=javax.crypto.<em>"%>

<%@ page import="javax.crypto.spec.</em>”%>

<%@ page import=<a href="http://java.io">java.io</a>.*”%>

e mesmo assim nao funcionou
o q pode ser?

abraços!

D

só pra complementar…
nesse JSP ele só recupera a senha Criptografada no banco de dados e Descriptografa…
na pagina de cadastro de novos usuarios, e q a senha é incluida no banco de dados, funcionou direitinho criptografar a senha…

esse problema q ta dando é na hora de verificar a senha… na hora de descriptografar

C

Vc está descriptografando com a chave certa e com o método correto ?
Como vc não postou o código fica difícl de verificar o que está rolando.

G

Olá Carlos,
vc comentou sobre “O Livro dos Código”, onde eu posso acha-lo aqui?

Obrigado, Guilherme

C

Olá Guilherme, veja no nosso link “Artigos e Tutoriais” e depois em resenhas.
Valeu.
Carlos

G

Muito obrigado Carlos,
Achei a resenha acho que o livro é bom mesmo.
Eu estou com mais uma dúvida, talvez você possa me ajudar também. Eu achei um livro na Internet do Scott Oaks sobre segurança do Java, você deve conhecer, e no capítulo 13, o último capítulo, que seria sobre criptografia do JCE, ele menciona que há uma restrição de exportação dos Estados Unidos e Canadá, e pelo que eu entendi só nestes países pode-se usar a criptografia. Estou certo?
Já no material da Sun, me parece é ?exportável?, mas somente para alguns países.
Pois bem, minha questão é em relação a se o JCE é exportável ou não?
Se for, desde de quando ou a partir de qual versão?

Com relação a controle de acesso, eu consegui fazer uns testes bem interessantes com sockets, com aplicações e uma applet. Valeu pela força.

C

E aí Guilherme, blz ?
O livro é interessante mesmo, vale a pena dar uma lida.
Quanto a questão de “exportação” da tecnologia de criptografia forte, isso já foi derrubado pelo governo americano, ou seja já na versão 1.4 do SDK vc poderá usar todas as funcinalidades do JCA e do JCE sem problemas.
Vi que vc esteve testando algumas coisas de controle de acesso, legal.
Estou um pouco enrolado com um projeto que estou coduzindo e não tive mais muito tempo para me dedicar ao estudo de questões de criptografia.
Sobre o livro do Oaks ele é muito bom, mas totalmente desatualizado !
Abraço
Carlos

Criado 28 de abril de 2004
Ultima resposta 16 de jun. de 2004
Respostas 13
Participantes 7