JSP - encriptar password

3 respostas
M

Boas

Preciso de fazer em JSP uma encriptação de uma password introduzida pelo utilizador.

Já pesquisei na web mas não esta facil de arranjar uma solução simples.
No PHP sei que basta usar md5(password) e ja esta.

Em JSP existe algum metodo parecido a este. Se não será que me podem ajudar?

3 Respostas

MasterMindFX

Cara , procura por classe Cipher ou algo sobre Java Cryptography Architecture !

Tenho uma classe simples de Base64 ve se te server

package br.com.processo;

public class Criptografia {

// The line separator string of the operating system.
private static final String systemLineSeparator = System.getProperty("line.separator");

// Mapping table from 6-bit nibbles to Base64 characters.
private static char[]    map1 = new char[64];
   static {
      int i=0;
      for (char c='A'; c<='Z'; c++) map1[i++] = c;
      for (char c='a'; c<='z'; c++) map1[i++] = c;
      for (char c='0'; c<='9'; c++) map1[i++] = c;
      map1[i++] = '+'; map1[i++] = '/'; 
      
   }
   
private static byte[]    map2 = new byte[128];
   static {
      for (int i=0; i<map2.length; i++) map2[i] = -1;
      for (int i=0; i><64; i++) map2[map1[i]] = (byte)i; }

public static String encodeString (String s) {
   return new String(encode(s.getBytes())); }

public static String encodeLines (byte[] in) {
   return encodeLines(in, 0, in.length, 76, systemLineSeparator); }

public static String encodeLines (byte[] in, int iOff, int iLen, int lineLen, String lineSeparator) {
   int blockLen = (lineLen*3) / 4;
   if (blockLen <= 0) throw new IllegalArgumentException();
   int lines = (iLen+blockLen-1) / blockLen;
   int bufLen = ((iLen+2)/3)*4 + lines*lineSeparator.length();
   StringBuilder buf = new StringBuilder(bufLen);
   int ip = 0;
   while (ip < iLen) {
      int l = Math.min(iLen-ip, blockLen);
      buf.append (encode(in, iOff+ip, l));
      buf.append (lineSeparator);
      ip += l; }
   return buf.toString(); }


public static char[] encode (byte[] in) {
   return encode(in, 0, in.length); }


public static char[] encode (byte[] in, int iLen) {
   return encode(in, 0, iLen); }


public static char[] encode (byte[] in, int iOff, int iLen) {
   int oDataLen = (iLen*4+2)/3;       // output length without padding
   int oLen = ((iLen+2)/3)*4;         // output length including padding
   char[] out = new char[oLen];
   int ip = iOff;
   int iEnd = iOff + iLen;
   int op = 0;
   while (ip < iEnd) {
      int i0 = in[ip++] & 0xff;
      int i1 = ip < iEnd ? in[ip++] & 0xff : 0;
      int i2 = ip < iEnd ? in[ip++] & 0xff : 0;
      int o0 = i0 >>> 2;
      int o1 = ((i0 &   3) << 4) | (i1 >>> 4);
      int o2 = ((i1 & 0xf) << 2) | (i2 >>> 6);
      int o3 = i2 & 0x3F;
      out[op++] = map1[o0];
      out[op++] = map1[o1];
      out[op] = op < oDataLen ? map1[o2] : '='; op++;
      out[op] = op < oDataLen ? map1[o3] : '='; op++; }
   return out; }


public static String decodeString (String s) {
   return new String(decode(s)); }


public static byte[] decodeLines (String s) {
   char[] buf = new char[s.length()];
   int p = 0;
   for (int ip = 0; ip < s.length(); ip++) {
      char c = s.charAt(ip);
      if (c != ' ' && c != '\r' && c != '\n' && c != '\t')
         buf[p++] = c; }
   return decode(buf, 0, p); }


public static byte[] decode (String s) {
   return decode(s.toCharArray()); }


public static byte[] decode (char[] in) {
   return decode(in, 0, in.length); }


public static byte[] decode (char[] in, int iOff, int iLen) {
   if (iLen%4 != 0) throw new IllegalArgumentException ("Length of Base64 encoded input string is not a multiple of 4.");
   while (iLen > 0 && in[iOff+iLen-1] == '=') iLen--;
   int oLen = (iLen*3) / 4;
   byte[] out = new byte[oLen];
   int ip = iOff;
   int iEnd = iOff + iLen;
   int op = 0;
   while (ip < iEnd) {
      int i0 = in[ip++];
      int i1 = in[ip++];
      int i2 = ip < iEnd ? in[ip++] : 'A';
      int i3 = ip < iEnd ? in[ip++] : 'A';
      if (i0 > 127 || i1 > 127 || i2 > 127 || i3 > 127)
         throw new IllegalArgumentException ("Illegal character in Base64 encoded data.");
      int b0 = map2[i0];
      int b1 = map2[i1];
      int b2 = map2[i2];
      int b3 = map2[i3];
      if (b0 < 0 || b1 < 0 || b2 < 0 || b3 < 0)
         throw new IllegalArgumentException ("Illegal character in Base64 encoded data.");
      int o0 = ( b0       <<2) | (b1>>>4);
      int o1 = ((b1 & 0xf)<<4) | (b2>>>2);
      int o2 = ((b2 &   3)<<6) |  b3;
      out[op++] = (byte)o0;
      if (op<oLen) out[op++] = (byte)o1;
      if (op><oLen) out[op++] = (byte)o2; }
   return out; }




}
>
D

Boas!

Aproveitando o topico criado pelo Mac135 :wink: , pois tambem ando á procura de uma solução para esse problema!!

MasterMindFX, essa classe que estás a disponibilizar é responsável por gerar toda a incriptação. Segundo percebi.

Agora faço uma questão algo basica, como seria feita a chamada a essa classe a fim de obter o resultado da encriptação?

Ou se não existe nenhuma solução mais simples tal como questionou o user Mac135.

Cumprimentos.

MasterMindFX

Deathadder

Vc pode instanciar ela e invocar os metodos encodeString (String s) e decodeString (String s) para codificar e decodificar ,
Existem outros metodos que recebem bytes e char como argumentos (se não me engano)

Mais string eu testei e funcionou beleza !

Criado 21 de maio de 2010
Ultima resposta 22 de mai. de 2010
Respostas 3
Participantes 3