jueves, 17 de mayo de 2012


MÉTODOS DE ENCRIPTACIÓN:




La encriptación en ordenadores, está basada en la ciencia de la criptología, que ha sido usada a través de la historia con frecuencia. Antes de la era digital, los que más hacían uso de la criptología, eran los gobiernos, particularmente para propósitos militares. Hoy en día, la mayoría de los sistemas de criptografía son aplicables a ordenadores, simplemente porque la complejidad de los algoritmos es demasiada para ser calculada por seres humanos.
Muchos de los sistemas de encriptación pertenecen a dos categorías:
  •        Encriptación de clave simétrica.
  •         Encriptación de clave pública.


Clave simétrica

En este tipo de encriptación, cada ordenador tiene una clave secreta (como si fuera una llave) que puede utilizar para encriptar un paquete de información antes de ser enviada sobre la red a otro ordenador.

Clave pública

Este método usa una combinación de una clave privada y una clave pública. La clave privada solo la sabe tu ordenador, mientras que la clave pública es entregada por tu ordenador a cualquier otros ordenador que quiere realizar una comunicación con el. Para decodificar un mensaje encriptado, un ordenador debe hacer uso de la clave pública, entregada por el ordenador original, y su propia clave privada.
Una clave pública de encriptación muy popular es PGP (Pretty good Privacy) que permite encriptar casi todo.

Clave pública: SSL

Una implementación de la encriptación de clave pública es SSL (Secure Sockets Layer). Originalmente desarrollada por Netscape, SSL es un protocolo de seguridad para Internet usado por navegadores y servidores Web para transmitir información sensitiva. SSL se ha convertido en parte de un protocolo de seguridad general llamado TLS (Transport Layer Security).
En tu navegador, puedes saber si estás usando un protocolo de seguridad, como TLS por ejemplo, de varias formas. Podrás ver que en la barra de direcciones, las primeras letras “http”, serán reemplazadas con “https”, y podrás ver un pequeño cerrojo en la barra de estado en la parte inferior del navegador.
Algoritmos de encriptación “hashing”

La clave en una encriptación de clave pública está basada en un valor llamado hash. Este valor está computado a partir de un número usando un algoritmo llamado hashing. En esencia, este valor es una modificación del valor original. Lo más importante de un valor hash es que es casi imposible conocer el valor original sin saber los datos que se utilizaron para crear el valor hash.


Gronsfeld:

Este método utiliza más de un alfabeto cifrado para poner en clave el mensaje y que se cambia de uno a otro según se pasa de una letra del texto en claro a otra.
Es decir que deben tenerse un conjunto de alfabetos cifrados y una forma de hacer corresponder cada letra del texto original con uno de ellos.

     Método de transposición: En nuestro repaso por los métodos clásicos de criptografía, nos centramos en el método de transposición, origen y fundamento de otros sistemas de cifrado más complicados.
El método de transposición consiste en reordenar los elementos que forman el texto original, de modo que el criptograma resultante tiene los mismos elementos pero su nueva colocación impide que se pueda entender.

    Método César: 

   Ahora vamos a conocer uno de los sistemas más clásicos de la Historia de esta disciplina: el método César, cuyo origen se sitúa en el siglo I antes de Cristo.
Este sistema se basa en el método de sustitución mono alfabética, es decir, el proceso de sustitución se lleva a cabo en cada uno de los elementos del texto claro.
En el método César, a cada letra le corresponde la que está 3 posiciones por delante en un proceso circular que recorre todo el alfabeto. Por ejemplo, a la letra «a» le corresponde la «d», a la «b» la «e», y así sucesivamente. Cuando hablamos de proceso circular nos referimos a que si llegamos al final del alfabeto, por ejemplo la «z», se entiende que volvemos al principio del mismo, por lo que tras contar tres posiciones a la «z» le corresponde la letra «c», a la «y» le corresponde la «b» y a la «x», la «a».
En términos más formales podríamos describir al método César como
Criptograma(i) = Texto_claro(i) + 3 (mod 26),
(i)           es la posición de las letras y (mod 26) indica que se trata de una suma módulo 26, en la que 26 es el número de letras del alfabeto que utilizamos.

Método Vigenére:

El cifrado de Vigenère utiliza una clave externa para realizar las sustituciones, con lo que este mismo algoritmo puede dar diferentes criptogramas para el mismo texto claro en función de la clave que utilicemos.

jueves, 19 de abril de 2012


CONEXIÓN ORACLE A PHP:



Funciones básicas a usar:

· oci_connect("usuario","clave", "SID oracle"): establece la conexión con el servidor oracle.
Devuelve el descriptor de conexión. Si la base de datos no es local se pone delante del SID la IP
'172.16.1.2/ORACLE9I'.
· oci_close($conexion): Cierra la conexión.
· oci_error(): devuelve el último error encontrado.
· oci_parse($conexion, $sentencia): prepara una sentencia para su ejecución.
· oci_execute($sentencia): ejecuta una sentencia.
· oci_fetch_array($sentencia, OCI_ASSOC): devuelve la siguiente fila de resultados como una
matriz cuyo índice es el nombre de la columna. Ejemplo:
$query = "SELECT id, name, sal FROM fruits";
$s = oci_parse ($connection, $query);
oci_execute ($s);
while ($row = oci_fetch_array($statement, OCI_ASSOC)) {
echo $row['ID']."<br>";
echo $row['NAME']."<br>";
echo $row['SAL']."<br>";
}
oci_fetch_array($sentencia, OCI_NUM): devuelve la siguiente fila de resultados como una
matriz cuyo índice coincide con la posición de la columna a la derecha de la SELECT. Ejemplo:
$query = "SELECT id, name, sal FROM fruits";
$s = oci_parse($connection, $query);
oci_execute ($s);
while ($row = oci_fetch_array($s, OCI_NUM)) {
echo $row[0]."<br>";
echo $row[1]."<br>";
echo $row[2]."<br>";
}
· oci_num_rows($sentencia): devuelve el número de filas afectadas por el último INSERT,
UPDATE o DELETE.
<?php
$conexion = oci_connect("system","oracle","xe");
if (!$conexion)
{
$e = oci_error();
echo "HA ocurrido un error: " . htmlentities($e['message']);
exit();
}
$query = "SELECT * FROM EMPLE ";//NO PONER ; EN SENTENCIA SQL
$s = oci_parse($conexion , $query );
oci_execute($s);
$i =0;
while ($res= oci_fetch_array($s, OCI_ASSOC))
{
echo $res['EMP_NO'] . "*" . $res['APELLIDO'] . "*" . $res['OFICIO'] . "*" . $res['SALARIO'];
echo "<br/>"; //salto linea
$i= $i+1;
} // fin while
oci_close($conexion);
?>
INSERCIÓN DE UNA FILA EN EMPLE, BORRADO DE FILAS Y USO DE UNA FUNCIÓN PARA LISTAR EMPLEADOS:
<?php
function listar_emple($dep) {
$conexion = oci_connect("system","oracle",'xe');
$query = "SELECT * FROM EMPLE WHERE DEPT_NO= $dep";//NO PONER ; EN SENTENCIA SQL
$s = oci_parse($conexion , $query );
oci_execute($s);
$i =0;
while ($res= oci_fetch_array($s, OCI_ASSOC))
{
echo $res['EMP_NO'] . "*" . $res['APELLIDO'] . "*" . $res['OFICIO']
. "*" . $res['SALARIO'] ;
echo "<br/>";
$i= $i+1;
} // fin while
echo "<hr/>";
}//fin de la función de listado

//INSERCION DE DATOS EN EMPLE
$conexion = oci_connect("system","oracle",'xe');
$E =1236;
$APE='LOPEZ';
$D=10;
$OFI='EMPLEADO';
$SAL=1500;
$query = "INSERT INTO EMPLE (EMP_NO,APELLIDO, OFICIO, SALARIO,DEPT_NO) VALUES ($E, '$APE',
'$OFI', $SAL, $D) ";
$s = oci_parse($conexion , $query );
oci_execute($s);
$numero=oci_num_rows($s);
echo "Filas insertadas: " . $numero . "<br/><hr/>";
//ELIMINACION DE EMPLE

$E =1236; //empleado a borrar
$query = "DELETE EMPLE WHERE EMP_NO = $E ";
$s = oci_parse($conexion , $query );
oci_execute($s);
$numero=oci_num_rows($s);
echo "Filas eliminadas: " . $numero . "<br/><hr/>";
listar_emple($D); //llamada a la función
oci_close($conexion);





Conexión con bases de datos PostgreSQL


Para establecer la conexión con una base de datos PostgreSQL desde PHP, se utiliza la función:

pg_connect("host=NombreHost dbname=BaseDatos user=Usuario password=Contraseña")
Cuyos parámetros, pasados como una cadena única, indican el nombre del servidor -o IP del mismo- ‘NombreHost’ donde se encuentra la base de datos, el nombre de la base de datos ‘BaseDatos’, el ‘Usuario’ de acceso a la base de datos, y la ‘Contraseña’ de acceso. En caso de éxito la función devuelve un identificador del enlace con el sistema de bases de datos.

A diferencia de MySQL, no es preciso indicar con otra función la base de datos a la que se desea acceder, ya que se ha facilitado como parámetro a la función de conexión.
Finalmente, para cerrar la conexión utilizamos:

pg_close($conexion)

Donde debemos pasarle como parámetro el enlace con la conexión inicialmente establecida.

Ejemplo:
<?php
 #Conectamos con PostgreSQL
 $conexion = pg_connect("host=192.168.0.3 dbname=BaseDatos user=Usuario
 password=Contraseña") or 
die ("Fallo en el establecimiento de la conexión");
 # ################################### # # 
Aquí insertaríamos las consultas sobre la base de datos
 # # ################################### # #
Cerramos la conexión con la base de datos pg_close($conexion); ?>

Conectando PHP y MySQL


Para la conexión utilizaremos la función mysql_connect y luego mysql_select_db el cual nos permite definir a que base de datos del servidor deseamos conectarnos.


$conexion = mysql_connect("localhost", "usuario", "clave");mysql_select_db("demo", $conexion); 

Obteniendo registros de la Base de Datos

Una vez que tenemos una conexión lo siguiente es extraer los datos, esto lo hacemos enviando consultas SQL mediante la función mysql_query. También obtenemos el numero total de registros devueltos por nuestra consulta.


$queEmp = "SELECT * FROM empresa ORDER BY nombre ASC";$resEmp = mysql_query($queEmp, $conexion) or die(mysql_error());$totEmp = mysql_num_rows($resEmp);

Mostrando los resultados

Finalmente mostramos los resultados obtenidos de nuestra consulta, para ello extraemos cada resultado utilizando la función mysql_fetch_assoc la cual devuelve una matriz asociativa utilizando los nombres de los campos de la tabla.


if ($totEmp> 0) {   while ($rowEmp = mysql_fetch_assoc($resEmp)) {      echo "<strong>".$rowEmp['nombre']."</strong><br>";     echo "Direccion: ".$rowEmp['direccion']."<br>";      echo "Telefono: ".$rowEmp['telefono']."<br><br>";   }}



Primero se verifica si existen resultados y luego en cada pasada de la sentencia While si existe el siguiente resultado para luego mostrarlo. Así como realizar  la consulta de registros, podemos insertar, editar y eliminar registros enviando sentencias SQL a la base de datos.