/** * Encripta una cadena de texto y la devuelve en otra * * @param cadena * @return String */ public String encripta(String cadena) { String encriptado = null; try { byte[] raw = StringToHex(aesKey.getEncoded()); SecretKeySpec skeySpec = new SecretKeySpec(raw, ALGORITMO); Cipher cipher = Cipher.getInstance(ALGORITMO); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(cadena.getBytes(CODIFICACION)); encriptado = HexToString(encrypted); } catch (IllegalBlockSizeException ex) { error(ex); } catch (BadPaddingException ex) { error(ex); } catch (UnsupportedEncodingException ex) { error(ex); } catch (InvalidKeyException ex) { error(ex); } catch (NoSuchAlgorithmException ex) { error(ex); } catch (NoSuchPaddingException ex) { error(ex); } return encriptado; }
/** * @param encriptado * @return String Este descifra una cadena de texto, siempre que no se haya renovado el objeto, ya * que de lo contrario la llave cambiarÃa y no seria posible descifrar. */ public String desencriptar(String encriptado) { String originalString = null; try { byte[] raw = StringToHex(aesKey.getEncoded()); SecretKeySpec skeySpec = new SecretKeySpec(raw, ALGORITMO); Cipher cipher = Cipher.getInstance(ALGORITMO); cipher.init(Cipher.DECRYPT_MODE, skeySpec); byte[] original = cipher.doFinal(StringToHex(encriptado)); originalString = new String(original); } catch (IllegalBlockSizeException ex) { error(ex); } catch (BadPaddingException ex) { error(ex); } catch (InvalidKeyException ex) { error(ex); } catch (NoSuchAlgorithmException ex) { error(ex); } catch (NoSuchPaddingException ex) { error(ex); } return originalString; }