Respuesta clonar() { Respuesta nueva = new Respuesta(); nueva.o = o; nueva.i = i; nueva.e = e; return nueva; }
static Respuesta dp(int a, int b) { if (a == n || b == s) return new Respuesta(); if (dp[a][b] != null) return dp[a][b]; Respuesta r = new Respuesta(); if (norte[a].tipo.equals(sur[b].tipo)) { if (a != n - 1 && b != s - 1) r.mejorar(dp(a + 1, b + 1)); if (norte[a].valor + sur[b].valor > 0) { r.valor += norte[a].valor + sur[b].valor; r.numero++; } } if (a != n - 1) r.mejorar(dp(a + 1, b)); if (b != s - 1) r.mejorar(dp(a, b + 1)); return dp[a][b] = r; }
public static Respuesta codigoVerificacion(String codigo) { Respuesta retorno = new Respuesta(); String md5Hash = ""; try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(codigo.getBytes()); byte byteData[] = md.digest(); // convert the byte to hex format method 1 StringBuffer sb = new StringBuffer(); for (int i = 0; i < byteData.length; i++) { sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1)); } md5Hash = sb.toString(); retorno.setOk(true); retorno.setDescripcion("Código verificación: " + md5Hash); retorno.setObjeto(md5Hash); } catch (Exception e) { retorno.setOk(false); retorno.setDescripcion("Error al generar el código de verificación\n" + e); retorno.setError(true); } return retorno; }
public static Respuesta hash(String password) throws Exception { Respuesta retorno = new Respuesta(); String md5Hash = ""; try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(password.getBytes()); byte byteData[] = md.digest(); // convert the byte to hex format method 1 StringBuffer sb = new StringBuffer(); for (int i = 0; i < byteData.length; i++) { sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1)); } md5Hash = sb.toString(); retorno.setOk(true); retorno.setDescripcion("Clave hasheada: " + md5Hash); retorno.setObjeto(md5Hash); } catch (Exception e) { retorno.setOk(false); retorno.setDescripcion("Error al hashear la clave \n" + e); retorno.setError(true); } return retorno; }
public static Respuesta dp(int numero, int anterior) { if (dp[numero][anterior] != null) return dp[numero][anterior]; if (numero == 1) { Respuesta r = new Respuesta(); if (anterior == ODD) r.o = 1; else if (anterior == EVEN) r.e = 1; else if (anterior == IMAGINARY) r.i = 1; return dp[numero][anterior] = r.clonar(); } Respuesta mejor = null; for (int i : factores[numero]) { Respuesta r = dp(numero / i, (anterior + 1) % 3); if (anterior == ODD) { if (mejor == null || r.e <= mejor.e) mejor = r.clonar(); } else if (anterior == EVEN) { if (mejor == null || r.i <= mejor.i) mejor = r.clonar(); } else if (anterior == IMAGINARY) { if (mejor == null || r.o <= mejor.o) mejor = r.clonar(); } } if (primos[numero]) { Respuesta r = dp(numero + 1, (anterior + 1) % 3); if (anterior == ODD) { if (mejor == null || r.e < mejor.e) mejor = r.clonar(); } else if (anterior == EVEN) { if (mejor == null || r.i < mejor.i) mejor = r.clonar(); } else if (anterior == IMAGINARY) { if (mejor == null || r.o < mejor.o) mejor = r.clonar(); } } if (anterior == ODD) mejor.o = Math.min(numero, mejor.o); else if (anterior == EVEN) mejor.e = Math.min(numero, mejor.e); else if (anterior == IMAGINARY) mejor.i = Math.min(numero, mejor.i); return dp[numero][anterior] = mejor.clonar(); }
public static Respuesta verificarMD5(String aVerificar, String originalMD5) throws Exception { Respuesta retorno = new Respuesta(); Respuesta retornoHash = new Respuesta(); String aVerificarMD5; try { retornoHash = hash(aVerificar); if (retornoHash.isOk()) { aVerificarMD5 = (String) retornoHash.getObjeto(); if (aVerificarMD5.compareTo(originalMD5) == 0) { retorno.setOk(true); retorno.setDescripcion("Clave correcta"); return retorno; } else { retorno.setOk(false); retorno.setDescripcion("Clave Incorrecta"); return retorno; } } else { retorno.setOk(false); retorno.setDescripcion("Error al hashear la clave a verificar"); retorno.setError(true); return retorno; } } catch (Exception e) { retorno.setOk(false); retorno.setDescripcion("Error al verificar la clave \n" + e); retorno.setError(true); return retorno; } }
/** * Método estático que genera un código verificatorio nuevo * * <p>Registro de versiones: * * <ul> * <li>1.0 18/03/2014 Francisco Hernandez (ATC Ltda): Versión inicial * </ul> * * @param rut int Rut de la persona * @param idFacebook String Identificador único de facebook * @return Objeto Respuesta con el string del cógido generado : ok=true si existoso, ok=false en * caso contrario, y descripcion, error=true si hay error. * @since 1.0 */ public static Respuesta generaCodigoVerificacion(int rut, String idFacebook) { Respuesta retorno = new Respuesta(); Log logger = new Log("MD5Hashing", "generaCodigoVerificacion()"); Date fecha = new Date(); String codigoPrevio = rut + "-" + fecha.toString() + "-" + idFacebook; Respuesta respCodigo = codigoVerificacion(codigoPrevio); if (respCodigo.isOk()) { String codigoListo = (String) respCodigo.getObjeto(); retorno.setOk(true); retorno.setDescripcion(respCodigo.getDescripcion()); retorno.setObjeto(codigoListo); logger.debug(respCodigo.getDescripcion()); } else { retorno.setOk(false); retorno.setDescripcion(respCodigo.getDescripcion()); logger.debug(respCodigo.getDescripcion()); } return retorno; }
public void finalize() throws Throwable { super.finalize(); }