Está en la página 1de 7

Commons Codec

Podemos descargar su biblioteca desde


aquí http://commons.apache.org/codec/download_codec.cgi
Descomprimimos el archivo y tomamos el .jar llamado commons-codec-
1.5.jar y lo agregamos al proyecto. En NetBeans solo le damos clic derecho
en Libraries del Proyecto y seleccionamos el .jar.

La clase DigestUtils es nuestra clase principal para utilizar los diferentes


algoritmos de encriptación.

MD5
String texto="Saludos desde Apuntesdejava.com";
String encriptMD5=DigestUtils.md5Hex(texto);
System.out.println("md5:"+encriptMD5);
La salida resultante es:

md5:e5adf3f9fe476c7816eacd3873f5b51f

Para comprobarlo, yo utilizo la consola de MySQL


SHA-HEX

Similar al MD5, solo es otro método

String texto="Saludos desde Apuntesdejava.com";


String encript=DigestUtils.shaHex(texto);
System.out.println("shaHex:"+encript);
La salida resultante es:

shaHex:2b05363b154309d7fc069cd922f316fa3f3ff866
Y en MySQL:

SHA-256 / 512

Para el SHA 256 se utiliza el método DigestUtils.sha256, y para 512, se


utiliza DigestUtils.sha512. Los resultados son como siguen:
sha-
256:9a4557a0f654365312b430b80f0da46be2c3a9db6a083f545145398fc
66c92d8
sha-
512:4c0a2187e03531011c7787752b66e8848a5f146e8aa08e5b5615030c5
daa9cd756150e225943b5182de2434d925a4d6889b2d129ed87f23943bce9
a8342b02bd
Como podemos ver.. a mayor bits, mayor confiabilidad.

Su contraparte, en MySQL, se utiliza la función sha2(). Ojo, esta función recién


está disponible en la versión 5.5.5.

Encriptar y desencriptar en PHP


Publicado en febrero 21, 2017 por Quicklick

Hoy traemos una muy buena forma de encriptar cadenas de texto en PHP con la
posibilidad de desencriptarlas en cualquier momento.

Simplemente tendremos que preocuparnos de proteger bien en nuestro código la


contraeña / KEY que usaremos para la encriptación.

Os dejo las funciones de 2 maneras:

1- Clase php, simplemente añadir en un archivo, ejemplo Enigma.class.php y hacer


include de ella cuando la necesitéis

01 class Enigma {
02

03 private static $Key = "CLAVESUPERSECRETA";

04

05 public static function encrypt ($string) {

return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5(Enigma::$K


06
}
07

08
public static function decrypt ($string) {
09
return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5(Enigma::$Key), bas
10 md5(md5(Enigma::$Key))), "\0");

11 }

12
}
13

Que usaremos de la siguiente forma:

$cadena_encriptada = Enigma::encrypt("DATO-IMPORTANTE"); //
1
idV1bVdOUvMR2ogaKBirwdq5J8O2ieOxdqNeXafy8Ds=
2

3 $dato_importante = Enigma::decrypt($cadena_encriptada); // DATO-IMPORTANTE

2- O si lo preferís, os la dejo también en forma de funciones.

1 function encrypt ($string) {

2 $key = "TIENE QUE SER LA MISMA EN LAS 2 FUNCIONES";

3 return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string,

}
4

5
function decrypt ($string) {
6
$key = "TIENE QUE SER LA MISMA EN LAS 2 FUNCIONES";
7
return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($st
8 md5(md5($key))), "\0");

9 }

Una buena opción sería obtener la KEY desde un archivo el cual podemos comprimir y
proteger con más medidas de seguridad.

Espero que os sea de utilidad para vuestros futuros proyectos.


Saludos!

Codificacion para URLs (urlencode, urldecode): Es un tipo especial de


codificacion pensado para poder pasar ciertos valores por URL.

Codificación en base 64: adecuado para codificar cualquier dato que no tenga
demasiada relevancia en la seguridad. La cadena de caracteres aumenta
aproximadamente un 33%.

Codificación uuencode: adecuada para la transmisión de datos. La cadena de


caracteres aumenta aproximadamente un 35%.

Codificación MD5: al contrario que las anteriores, este método de encriptación


no es reversible, es decir, no hay forma de llegar al valor codificado a partir de la
encriptación. Convierte cualquier cadena, en una cadena de 32 caracteres
hexadecimales.

Dicho esto, usa el método de codificación más adecuado para cada caso, y ten
presente que, el uso inapropiado de estos métodos lleva a que nuestras
aplicaciones tengan agujeros de seguridad.

Podéis usar la demo para comparar el resultado de las diferentes formas de


encriptación.

El código que presentamos a continuación, agrega unos detalles, como


presentar la página de resultados en una iframe situada bajo el formulario que
envía los datos. La página de procesamiento, detecta si la variable que recoge
los datos está o no vacía.
<!DOCTYPE html PUBLIC "-
//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DT
D/xhtml1-transitional.dtd"[]>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-
US" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-
8859-1" />
<title>Codificar cadenas.</title>
</head>

<body>

<form method="POST" target="profor" action="codifica.php">


<p align="center">Cadena a codificar: <input type="text" name="cad
ena" size="45">&nbsp;&nbsp;
<input type="submit" value="Codificar" name="B1"></p>
</form>

<p align="center">
<iframe src="codifica.php"
marginwidth="0" marginheight="0" name="profor" scrolling="no" border="
0" frameborder="0" width="800" height="500">
</iframe>
</p>

</body>

</html>
-----------------------------------------------------------------
--------- codifica.php

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="iso-8859-1" />
<title>Codificación en PHP.</title>

<style type="text/css">
<!--
.texto {
font-family: verdana,arial;
font-size: 1.0em;
color:#FF0000;
}
-->
</style>
</head>

<body>
<?php
// Codificacion y decodificacion de cadenas y valores numericos

$cadena = $_POST["cadena"];

if (empty($cadena))
{
echo "<p align=\"center\">Introduzca la cadena que desea codificar.</p
>";
}
else
{

$cod_url = urlencode($cadena);
$deco_url = urldecode($cod_url);

$codifica1 = base64_encode($cadena);
$decodifica2 = base64_decode($codifica1);

$codifica3 = convert_uuencode($cadena);
$decodifica4 = convert_uudecode($codifica3);

// Codificado no reversible
$codifica5 = md5($cadena);

echo "
<p>
<b>Codificado con URLenconde: </b>
<div class=\"texto\">$cod_url</div>
Decodificado URLdecode: $deco_url
</p>

<p>
<b>Codificado en base 64: </b>
<div class=\"texto\">$codifica1</div>
Decodificado en base 64: $decodifica2
</p>

<p>
<b>Codificado seguro con algoritmo uuencode: </b>
<div class=\"texto\">$codifica3</div>
Decodificado seguro con algoritmo uuencode: $decodifica4
</p>

<p>
<b>Codificación no reversible (MD5): </b>
<div class=\"texto\">$codifica5</div>
</p>
";

?>
</body>

</html>

También podría gustarte