Curso Básico PHP - Sintaxis Básica [Comentarios]
- Comentario en linea //
- Multilinea /**/
- UNIX Shell #
<? //comentario de una linea /*Comentario de varias lineas*/ #comentario unix like ;) ?>
Curso Básico PHP - Sintaxis Básica
Sintaxis Básica PHP
Curso Básico PHP - ¿Que es PHP?
¿Qué es PHP?
| PHP Logo |
Tips SQLeros: Evitar Mostrar Errores en PHP
Colocando esta simple línea de código nos evitamos que s vean los errores:
error_reporting(0);
Lo ideal, claro está, sería que nuestro código tuviera un buen manejo de los errores. Pero muchas veces se requieren las cosas con tanto prisa que nos resulta imposible programar las excepciones.
Diferencias entre include, require, include_once y require_once
pongo un caso, imaginen una funcion que se ejecuta en 4 ficheros php, para poder utilizar la misma funcion esta tendria que estar escrita en cada uno de los ficheros
¿inconvenientes?
- si queremos modificar la funcion, tenemos que cambiar cada una de los ficheros donde este escrita
- tenemos mas trabajo y necesitamos mas tiempo a la hora de modificar cada uno de los ficheros
- mas dificil de mantener
- mas codigo
- mas espacio ocupado
luego para modificar la funcion solo tenemos que editar el fichero general.php
- $variable = 10;
- include mostrara un warning y continuara con la ejecucion
- require mostrara un fatal error y parara la ejecucion
- include_once("fichero2.php"); //$variable es igual a 10
- $variable = 20; //$variable es igual a 20
- include_once("fichero2.php"); //$variable es igual a 20
- $variable = 10
¿porque 20 y no 10?
tanto include_once como require_once solo se pueden ejecutar una vez
la segunda vez que se llama a include_once, esta es como si no existiera.
lo mismo passa con require y require_once, si el fichero no existe muestra un fatal error y para la ejecucion
- vigila a la hora de hacer mas de un include con ficheros que contengan funciones
si importas un fichero que ya ha sido incluido antes o que contenga alguna funcion declarada anteriormente, aparacera un Fatal error y la ejecucion terminara, ya que no se puede declarar la misma funcion 2 veces - si quieres importar ficheros con solo variables, no tendras problemas para llamarlo mas de una vez (solo con include y require)
- utiliza require o require_once, para cargar archivos de configuracion, que contengan constantes
- puedes hacer un fichero php que contenga una plantilla html de un mensaje de foro y hacer un include a este fichero dentro de un while o for, ojo con include_once no lo puedes hacer
- si el fichero que quieres incluir esta escrito en php, este debe tener encima del codigo <?php y al final ?>, si es codigo html no hace falta
Nuevo SDK de PHP Para Windows Azure
- Herramientas mejoradas para el manejo de la plataforma (incluyendo administración de tablas, colas, blobs)
- Ayudas para el transporte HTML, AuthN/AuthZ, REST y el manejo de errores
- Soporte para instrumentación y administración de sesiones
- Soporte para funciones de almacenamiento de PHP en tablas de Windows Azure
Google: mod_pagespeed, tus sitios optimizados
El modulo, llamado mod_pagespeed, puede ser instalado y configurado en los servidores web Apache, el software más utilizado para el funcionamiento de sitios web. Una vez instalado, mod_pagespeed determina sobre la marcha la manera de optimizar el rendimiento de una web. Por ejemplo, comprime imágenes de manera más eficiente y cambia la configuración para que un mayor número de páginas se almacenen en el caché del navegador del usuario, de modo que los mismos datos no tengan que cargarse en varias ocasiones. El software se actualiza automáticamente, señala Richard Rabbat, gerente de producto para el nuevo proyecto. Afirma que esto significa que a medida que Google y otras terceras partes realicen mejoras, las personas que lo instalen se beneficiarán de dichas mejoras sin tener que realizar ningún cambio. "Creemos que hacer que toda la red sea más rápida es algo crítico para el éxito de Google", señala Rabbat. Hacer que la red sea más rápida debería animar a la gente a usarla más y aumentar la probabilidad de que usen los servicios y el software de Google. Rabbat señala la frustración que sienten los usuarios cuando hacen clic en un enlace o escriben una dirección URL y observan una página en blanco durante varios segundos. "En muchos casos," afirma, "personalmente abandono esa página cuando algo como eso ocurre". Google ya ofrece una herramienta llamada Page Speed, encargada de medir la velocidad a la que se carga una página web y sugerir formas de mejorarla. "Nos hicimos la siguiente pregunta: en lugar de simplemente decirle a la gente cuáles son los problemas, ¿podemos arreglarlos de forma
Mark Zuckerberg donará $100M a educación pública en EEUU
El CEO y fundador de Facebook Mark Zuckerberg donará 100 millones de dólares para las escuelas públicas en los EE.UU., y se le informó que se anunciará la donación el viernes en el show de Oprah Winfrey.
La donación será la primera parte de una fundación que Zuckerberg está creando para mejorar la educación en los EE.UU, y la primera donación 100 millones de dólares se va aNewark.
Mark Zuckerberg fue elegido recientemente como una de las persona más rica del mundo con una fortuna estimada en alrededor de 6,9 mil millones dólares, lo que lo pondría por delante del consejero y delegado de Apple Steve Jobs.
Mucha gente llamará a la donación un movimiento calculado, ya que se dará a conocer el mismo día que la película “The social Network” es puesta en marcha en los cines americanos, una película que retrata Zuckerberg de una forma poco favorable como les puede pasar a muchos universitarios(todos fuimos jovenes y alguna tonteria seguro que hicimos).
Al final del día, independientemente de sus motivaciones para la donación, sigue siendo una donación increíblemente generoso que ayudará al sistema escolar publico. Enhorabuena por ese apoyo a la educación.
Los 10 errores mas comunes al programar orientado a objetos en PHP
Los 21 errores más comunes al programar con php
Aunque muchos de los que programamos constantemente en PHP hemos superado varios puntos, siempre hay cosas en las que caemos, pudiendo mejorar la calidad de nuestro código.
Los errores están divididos en 3 partes, siendo los primeros
Codeplex: Hostea tu proyecto OpenSource
Si bien en sus inicios, el sitio fue muy criticado, por ser una copia de SourceForge.net
Hoy te vamos a hablar de CodePlexde Microsoft, el que ya lleva su buen tiempo en la red, convirtiéndose en un sitio muy visitado por los programadores.
CodePlex es una herramienta que ayuda a los desarrolladores en su administración de proyectos Open Source.
Estas son algunas de las características y prestaciones que podemos encontrar en CodePlex:
- Posibilidad de publicar nuestros proyectos open source.
- Hosting para nuestros archivos de código.
- Página para el proyecto. Es posible editarla.
- Administración de miembros del equipo de desarrollo.
- Upload de código.
- Manejo de versiones.
- Comunidad y área de discusiones para nuestro proyecto.
- Subscripciones vía RSS.
- Los usuarios pueden escribir reviews o comentarios por cada versión.
- Estadísticas de proyecto.
- Varios tipos de licencias para escoger, entre ellas figuran GNU y GNU v2
Proyectos interesantes publicados en el sitio:
- AjaxControlToolkit Un conjunto de herramientas de Ajax para aplicaciones ASP.NET
- SilverLight Toolkit Una colección de controles para la plataforma SilverLight
- BlogEngine Es un programa con prestaciones similares a las que ofrece WordPress hecho en .NET
- IronPython La implementación de Pythom para .NET
- FacebookToolkit Herramientas para la manipulación de la API de Facebook
- MVC Samples Conjunto de aplicaciones ejemplo de MVC de Microsoft
Hola Mundo con PHP y el API de Facebook
Ultimamente me esta interesando bastante el tema las APIs de Facebook y Twitter. Asi que me decidi a buscar info y como siempre la comparto con todos ustedes.
El dia de hoy quiero mostrarles como hacer su primera aplicacion para facebook usando PHP. No es una aplicacion para nada util pues solo muestra un ‘Hola mundo’ seguido de tu nombre. Pero antes hay que entender algunas cosas.
XSS – Cross-Site-Scripting IV
Defendiendo Nuestros Usuarios.
Las formas más sencillas de defender nuestros usuarios son mediante las siguientes acciones:
Cookies:
Evitar almacenar datos vitales
XSS – Cross-Site-Scripting III
Defendiendo Nuestra Aplicación.
El primer modo de defensa que veremos, será la defensa de nuestra aplicación, misma que nos enseñara técnicas sencillas para defender nuestro sitio mediante la validación de entradas de datos.
Tenemos que tener claro que lo que debemos hacer es impedir la entrada de scripts en nuestros campos de inserción de datos, validando cada entrada para asegurarnos que no contenga código que pueda afectar nuestra aplicación o a nuestros usuarios.
- Limitación de caracteres de entrada.
Lo primero que debemos hacer
¿Qué es el CAPTCHA y RECAPTCHA?
Para poder distinguir a los humanos de los robots en las páginas web, sobre todo para evitar el spam y otros abusos, aparecieron los CAPTCHA: esas letras y números, normalmente distorsionadas que tienes que identificar en un formulario para que te deje enviarlo. Este término, marca registrada propiedad de la Carnagie Mellon University, es el acrónimo de “Completely AutomatedPublic Turing test to tell Computers and Humans Apart”. El Test de Turing tiene como objeto ver la capacidad de una máquina de mostrar inteligencia. Descrito por el profesor Alan Turing en 1950 el test consiste en una conversación entre un juez humano y otros dos interlocutores, uno humano y el otro una máquina, mediante un programa de teletipos o chat, para comprobar estrictamente la capacidad de la máquina de expresarse, no de reproducir palabras. Si el juez no es capaz de diferenciarlos, la máquina habrá pasado el test. Por eso los CAPTCHA están considerados tests de Turin inversos, ya que es el humano el que ha de demostrar su condición.
Los primeros CAPTCHA eran generados por programas que distorsionaban las imágenes, pero hecha la ley hecha la trampa, los chicos malos pronto encontraron métodos para saltárselos. Así que cada vez se hicieron más complejos añadiendo líneas y motivos de fondo.
Lo último son los reCAPTCHA cuyo lema ya casi lo explica todo (stop spam, read books), en lo que viene a ser un divertido ejercicio de “recontra-ingeniería-inversa”. El sistema es parecido, pero en vez de utilizar fondos raros o rayas, te presentará un par de palabras sacadas de libros antiguos que los programas de reconocimiento de escritura (OCR) no han sido capaces de identificar a los que además se le añade distorsión. Así que de paso que demuestras que eres humano, colaboras en la digitalización de libros antiguos. Según los datos de reCAPTCHA cada día se completan 60 millones de CAPTCHAs en todo el mundo, así que de la “computación distribuída” hemos pasado a la “computación distribuída humana”.
Además reCAPTCHA es gratuito y puedes implementarlo en tu blog (hay plugin para WordPress), y tiene una opción sonora para personas con problemas visuales.
Un Saludo!!
Numeros Aleatorios Reales Con Random.Org
Hola SQLeros, el día de hoy les presento una aplicación web que es muy interesante se encuentra en la dirección RANDOM.ORG.
[caption id="attachment_306" align="aligncenter" width="300" caption="RANDOM.ORG"]
Lo peculiar es la forma en que los numeros aleatorios son generados, tal vez se han preguntado cómo las máquinas predecibles como las computadoras pueden generar aleatoriedad.
En realidad, los números aleatorios usados en la mayoría de los programas de compudatora son pseudo-aleatorios, lo que significa que cada numero se genera en una forma predecible mediante una fórmula matemática.
Esto está bien para muchos propósitos, pero no puede ser al azar en la forma en que lo esperamos, por ejemplo si estás acostumbrado a juegos de azar o a la lotería.
RANDOM.ORG ofrece auténticos números al azar para cualquier usuario de la Internet. El azar viene de ruido atmosférico, que para muchos propósitos es mejor que el algoritmos de números pseudo-aleatorios que se utilizan normalmente en los programas de la computadora.
La gente usa RANDOM.ORG para la creación de dibujos, la lotería y sorteos, para realizar juegos, etc. , para aplicaciones científicas y para el arte y la música.
El servicio ha existido desde 1998 y fue construido y está siendo operado por Mads Haahr de la Facultad de Ciencias de la Computación y Estadística en el Trinity College de Dublín en Irlanda.
No esta demás señalar que la página cuenta con un API el cual esta expuesto en intenet y se puede consumir desde distintos lenguajes de programación con sus respectivas implementaciones.
Después de una breve platica sobre este servicio haremos un ejercicio en PHP.
Supongamos que necesitamos obtener un intervalo de números aleatorios para hacer alguna actividad.
[sourcecode lang="php"]
< ?php
/* Titulo: Numeros Aleatorios Reales Con Random.Org
* Autor: RammsZeñábI.
* Blog: SQLeros.Com.Ar 2010
*Funcion para recolectar una serie de numeros aleatorios desde la página RANDOM.ORG
* $numeros, es la cantidad de numeros que se decean obtener por defecto es 1.
* $minimo, es el intervalo izquierdo de la serie por defecto es 0.
* $maximo, es el intervalo derecho de la serie por defecto es 10.
* $base, es la base de la serie de los numeros obtenidos, por defecto es 10.
* $formato de la serie resultante puede ser "plain" o "html" por defecto es "plain".
*/
function aleatorioDeRandomDotORG($numeros=1,$minimo=0,$maximo=10,$base=10,$formato="plain")
{
$repuesta_http=""; //guardamos la serie de los numeros generados
$servidor="www.random.org"; //el dominio a donde crearemos la conexión.
$consulta="/integers/?num=$numeros&min=$minimo&max=$maximo&col=1&base=$base&format=$formato&rnd=new"; //la consulta GET que harémos.
$puerto=80; //puerto a donde se conecta el socket.
$tiempoEspera=30; //tiempo de espera para la conexión.
//Creamos un socket y si todo sale muy bien
if($fsock = fsockopen($servidor,$puerto, $errno, $errstr, $tiempoEspera))
{
//ejecutamos la consulta
@fputs($fsock, "GET $consulta\r\n");
// y leemos los datos.
while (!@feof($fsock))
{
//guardamos en la variable lo que leemos
//agregamos la marca "," para separalas por comas al final.
$repuesta_http .= fgets($fsock, 128).",";
}
//Cerramos el socket.
fclose($fsock);
}
//y finalmente devolvemos un arreglo con los valores de la serie.
return explode(",",$repuesta_http);
}
?>
Creación de Numeros Aleatorios Usando RANDOM.ORG
< ?php
//probamos el codigo.
$cosa=aleatorioDeRandomDotORG(5);
//ahora mostramos los valores.
echo "
- ";
- $cosa[$i]";
}
echo "";
?>
SQLeros.Com.Ar
[/sourcecode]
Bueno un Saludo!!
for($i=0;$i
echo "
Corriendo Wordpress ¿En SQL Server?
Creo que la posibilidad de correr Wordpress con SQL Server será del agrado de muchos, ya que por fin existe una solución tanto de forma local como en la nube mediante el uso de Windows Azure y SQL Azure.
Existen dos formas de realizar la instalación:
- Distribución: esta es la forma más fácil de empezar. Incluye la última versión de Wordpress con el parche de SQL Server ya aplicado.
- Parche: son únicamente los archivos modificados, mismos que pueden ser aplicados a la versión de Wordpress que descargues.
El propósito de este parche es proporcionar una abstracción en la estructura de la base de datos dentro de Wordpress, causando un mínimo de errores en el core de Wordpress y sin perdidas en las características del CMS.
El tutorial completo de instalación consta tan sólo de 8 pasos.
Enlace: Download WordPress on SQL Server Distro & Patch | Wordpress on Microsoft | Getting Started
El Kamasutra y La Criptografia
Ten en cuenta que este cuadro no es completo.
El primer texto escrito data de hace más de 6000 años. El arte del cifrado ha existido desde hace cerca de 3000 años.
| c. 1900 AC | En el antiguo Egipto se usaron símbolos que no eran los normales. |
| c. 1500 AC | Los fenicios diseñaron un alfabeto. |
| c. 1000 AC | Se usaron otros símbolos distintos a los normales en la antigua Mesopotamia. |
| c. 600 AC | En Palestina se cifran textos usando un algoritmo simple de sustitución monoalfabética Atbash. |
| c. 500 AC | Los espartanos cifran mensajes utilizando Scytale. |
| c. 400 AC | El Kamasutra describe un algoritmo de cifrado por sustitución monoalfabética. |
| c. 200 AC | El historiador griego Polybius describe el cifrado de Polybius por primera vez. |
| c. 100-44 AC | Julio César inventa un código para cifrar sus mensajes (el Código César). Éste es el algoritmo de sustitución monoalfabética más conocido. |
| c.500-1400DC | La "edad oscura de la criptografía" empieza en Europa: Durante este periodo la criptografía es considerada como magia negra y se pierde gran parte del conocimiento que se tenía hasta la época. Por otro lado, la criptografía florece en Persia. |
| 855 DC | Aparece el primer libro sobre criptografía en Arabia. Entre otras cosas, Abu 'Abd al-Raham al-Khahil ibn Ahmad ibn'Amr ibn Tammam al Farahidi al-Zadi al Yahamadi (Abu-Yusuf Ya’qub ibn Ishaq al-Kindi, conocido como Al-Kindi) describe orgulloso en su libro un mensaje griego descifrado que es deseado por el emperador bizantino. Su criptoanálisis se ha basado en un análisis de frecuencia ayudado con el conocimiento de una pequeña porción del comienzo del texto original -- este mismo criptoanálisis es el que se empleará en la Segunda Guerra Mundial contra Enigma. |
| 1379 | El papa Clemente VII ha escapado a Avignion y ha ordenado a su secretario, Gabrieli di Lavinde (Parma), diseñar un nuevo código para cifrar sus mensajes. Este código consiste en una combinación de sustituciones de letras individuales y palabras codificadas. Gabrieli ha creado una lista de las palabras más comunes que son sustituidas por combinaciones de dos letras y el resto de palabras que no están en la lista son cifradas utilizando sustitución monoalfabética. Debido a la sencillez de este código, será utilizado durante los próximos 450 años, sobre todo en los círculos diplomáticos. |
| 1412 | En Arabia se escribe una enciclopedia con 14 tomos en donde se explican conceptos de criptografía. En ella, además de las técnicas de sustitución y transposición, se explica un método consistente enrepetidas sustituciones de cada carácter del texto claro. Es la primera vez en la historia que habla de un método como éste. |
| Siglo XV | En Italia se produce un boom de la criptografía debido un alto desarrollo de la vida diplomática. |
| 1466 | Leon Battista Alberti, uno de las figuras líderes del Renacimiento Italiano, publica su libro "Modus scribendi in ziferas", en donde habla por primera vez del disco de Alberti, el primer sistema polialfabético que se conoce. Alberti es el secretario de un cuerpo oficial perteneciente a la corte papal que se encarga únicamente de labores relacionadas con la criptografía. Por todo esto, Alberti será conocido como el "padre de la criptografía". |
| 1518 | Se imprime el primer libro sobre criptografía cuyo título es "Polygraphia libri sex", escrito por el abad Johannes Trithemius en lengua alemana. En este libro también se describen cifrados polialfabéticos con las nuevas tablas de sustitución rectangulares. |
| 1563 | Giovanni Battista Porta publica "De Furtivis Literarum Notis", un libro en el que describe distintos métodos de cifrado y criptoanálisis. En él se menciona el primer cifrado por sustitución digráfica. |
| Finales del s.XVI | Francia toma la delantera en criptoanálisis. |
| 1577 | El brillante criptoanalista flamenco Van Marnix cambia el rumbo de la historia europea al descifrar una carta española en donde se explicaban los planes para conquistar Inglaterra enviando tropas desde los Países Bajos. |
| 1585 | El diplomático francés Blaise de Vigenère publica su libro "Tractié de Chiffre" en donde presenta el primer sistema polialfabético con autoclave, conocido como "Le chiffre indéchiffrable" aunque más adelante se le cambiará el nombre por el de el cifrado de Vigenère. La idea de la autoclave perdurará en el tiempo y se aplicará en los algoritmos futuros como el DES en los modos CBC y CFB. |
| 1586 | Se intenta llevar a cabo el complot Babington por el cual se asesinaría a la reina Elisabeth I de Inglaterra y se colocaría en el trono a Mary Stuart, Reina de Escocia. El "Servicio Secreto Británico" pone fin a esta trama y consigue los nombres de los conspiradores, condenando a Mary Stuart. Mary se comunicaba a través de cartas con sus conspiradores. Pero el mensajero, que era un espía de Elisabeth realizaba copias exactas de cada carta y las enviaba a Francis Walsingham, secretario del estado de Elisabeth, que a través de Thomas Phelippes consiguió descifrarlas revelando el complot. Pero la cosa no quedó ahí, Walsingham quería saber la identidad de los conspiradores por lo que hizo que Phelippes añadiera una posdata a una carta, de manera que en la respuesta a la carta, Mary incluyó el nombre de los implicados. |
| Siglo XVII | Comienza la era de las cámaras negras. La mayoría de los gobiernos disponen de departamentos en donde profesionales se encargan de romper los cifrados a los que tienen acceso. |
| 1623 | Sir Francis Bacon describe un método de esteganografía: cada letra del texto claro es reemplazada por un grupo de cinco letras formado por una combinación de las letras 'A' y 'B' que se intercalan en un texto normal con una fuente diferente. Este método es el precursor del que luego será conocido como codificación birania de 5 bits. |
| 1628 | Antoine Rissignol se convierte en el primer criptoanalista contratado a tiempo completo tras descifrar un mensaje del enemigo gracias al cual se puso fin al sitio que los hugonotes ejercían sobre Realmont. Desde entonces, el papel del criptoanalista ha sido fundamental en toda organización militar. |
| 1700 | El zar de Rusia utiliza una gran tabla de códigos de 2000-3000 sílabas y palabras para cifrar sus mensajes. |
| 1795 | Thomas Jefferson diseña el primer dispositivo de cifrado cilíndrico, conocido como la "rueda de Jefferson". Sin embargo, no lo utilizará nunca, por lo que caerá en el olvido o, más bien, no se llegará a hacer público. |
| 1854 | El matemático inglés Charles Babbage inventa un dispositivo de cifrado cilíndrico similar al de Jefferson. Además, descubre un método de criptoanálisis para romper el, hasta ahora conocido, "cifrado irrompible" que diseñó Vigenère. Es por ello que a partir de este momento se conocerá como el cifrado de Vigenère, aunque en realidad esto no se hará público hasta su muerte ya en el siglo XX. |
| Siglo XIX | La criptología encuentra un lugar en la literatura: Arthur Conan Doyle, Julio Verne, Edgar Allan Poe... |
| 1854 | El físico inglés Charles Wheatstone inventa un cifrado que utiliza una matríz de 5x5 como clave. Su amigo, Lord Lyon Playfair, barón de Saint Andrews lo hace público en círculos militares y diplomáticos y, por ello, se conocerá como el cifrado de Playfair. |
| 1863 | Friedrich Kasiski (1805-1881), un importante prusiano, desarrolla métodos estadísticos de criptoanálisis que fueron capaces de romper el cifrado de Vigenère. |
| 1883 | Se publica "La Cryptographie militaire" de Auguste Kerckhoff von Nieuwendhoff. Esto supondrá un hito en la criptografía telegráfica de la época. Contiene el "principio de Kerckhoff", que exige basar la seguridad de un método de cifrado únicamente en la privacidad de la clave y no en el algoritmo. |
| 1891 | El francés Etienne Bazeries inventa un dispositivo cilíndrico conocido como el cilindro Bazeries que, en principio, es similar a la rueda de Jefferson. Se publicará su diseño en el año 1901, después de que el Ejército francés lo rechace. |
| 1917 | El descifrado de los telegramas de Zimmermann por el Servicio Secreto Inglés provocó la crítica entrada de los EEUU en la Primera Guerra Mundial |
| 1917 | El americano Gilbert S. Vernam, empleado de AT&T, desarrolla la cinta aleatoria de un sólo uso, el único sistema criptográfico seguro. |
| 1918 | El criptoanalista francés, Lieutenant Georges Painvin rompe el cifrado ADFGVX, que es el que usaba el ejército alemán desde un poco antes del fin de la Primera Guerra Mundial. Este algoritmo consistía en un cifrado en dos pasos; primero se realizaba una sustitución (cada letra era sustituida por un bi-grama a través de una matriz que hacía de clave) y después, los bi-gramas se dividían en columnas que se reorganizaban. |
| 1918 | Arthur Scherbius y Richard Ritter inventan la primera Enigma. Al mismo tiempo, la máquina de rotores es inventada y patentada por Alexander Koch (Países Bajos) y Arvid Damm (Suecia). |
| 1920 | William F. Friedman (1891-1969), tras ser galardonado como el padre de la criptografía estadounidense, diseña (sin relación con Kasiski) métodos estadísticos para criptoanalizar el cifrado de Vigenère. |
| 1921 | El californiano Edward Hebern construye la primera máquina de cifrado basada en el principio de losrotores |
| 1922 | La rueda de Jefferson es redescubierta en los EEUU, cuyo cuerpo de marines la rediseña y la utiliza durante la Segunda Guerra Mundial. |
| 1923 | La máquina de rotores Enigma, diseñada por el alemán Arthur Scherbius, se revela en el International Post Congress. Además, Scherbius funda la compañía "Chiffriermaschinen AG" para comercializar Enigma en todo el mundo. |
| 1929 | Lester S. Hill publica el artículo "Cryptography in an Algebraic Alphabet". El cifrado de Hill aplica álgebra (multiplicación de matrices) para cifrar. |
| 1940 | Los espías alemanes utilizan micropuntos. |
| 1940 | Alan Turing rompe Enigma con la idea de la Bomba de Turing que concibió basándose en el trabajo deMarian Rejewski. |
| 1941 | Se descifran los mensajes con los que se comunicaban los japoneses en donde se hablaba del inminente ataque a Pearl Harbor. Esto es debido a la labor de un equipo dirigido por William Frederick Friedman, que rompió la máquina japonesa Purple. Muchos historiadores creen que el criptoanálisis acortó en una año la Segunda Guerra Mundial. |
| 1948/1949 | Claude Shannon establece la bases matemáticas de la teoría de la información y publica "Communication Theory of Secrecy Systems", en donde expone un algoritmo de cifrado teóricamente irrompible que debe satisfacer los requisitos de la cinta aleatoria de un sólo uso. |
| 1973 | David Elliott Bell y Len LaPadula desarrollan el modelo Bell-LaPadula que formaliza las normas de acceso a la información clasificada, con la intención de lograr la confidencialidad de los datos. |
| 1973-1975 | Ellis, Cocks y Williamson desarrollan un algoritmo de cifrado de clave pública para el gobierno británico (GCHQ). Este descubrimiento no será conocido públicamente hasta 1997. Debido a esto, los métodos de cifrado asimétrico serán nuevamente reconstruidos de forma independiente y, esta vez sí, públicamente por Diffie, Hellman, Rivest, Shamir y Adleman, que serán considerados los descubridores de la criptografía de clave pública. |
| 1975 | Diffie y Hellman describen que los procedimientos de clave pública son teóricamente posibles, a pesar de que se ha intentado demostrar lo contrario. |
| 1976 | Whitfield Diffie y Martin Hellman publican "New Directions in Cryptography". Que introduce un nuevo método de distribución de claves criptográficas, lo que era hasta la fecha uno de los problemas fundamentales de la criptografía. Este mecanismo será conocido como el protocolo Diffie-Hellman de intercambio de claves. |
| 1977 | El algoritmo inventado por IBM en 1975, DES (Data Encryption Standard), es elegido por el NIST (FIPS PUB-46) como el algoritmo de cifrado estándar de los EEUU. |
| 1977 | El algoritmo RSA, llamado así por sus desarrolladores, Ronald Rivest, Adi Shamir y Leonard Adleman, es publicado. RSA supone el primer procedimiento de clave pública utilizado en la práctica y ocupa el puesto de ser la contribución criptológica más innovadora del siglo XX. |
| 1979 | Los primeros cajeros automáticos (Automatic Teller Machines) utilizan DES para cifrar los códigos PIN. |
| 1982 | El físico Richard Feynman diseña el modelo teórico de una computadora cuántica. |
| 1984 | Charles H. Bennett y Gilles Brassard describen la criptografía cuántica (BB84 protocol). |
| 1985 | Goldwasser, Micali y Racoff descubren el procedimiento de conocimiento cero. |
| 1986 | De forma independiente, Neal Koblitz y Victor Miller proponen usar curvas elípticas como modelo de criptografía de clave pública. |
| 1991 | Xueija Lai y James Massey desarrollan el algoritmo IDEA en Suiza, que será usado en el software criptográfico PGP. |
| 1991 | DSA es elegido por el NIST como algoritmo estándar de firma digital. |
| 1991 | PGP (Pretty Good Privacy) es diseñado por Phil Zimmermann como un software gratuito y de código libre, con el fin de cifrar e intercambiar archivos con una gran seguridad. Esta es la primera vez que el cifrado híbrido (combinación de criptografía simétrica y asimétrica) es aplicada a un programa popular para usuarios finales. El objetivo principal era el de cifrar los archivos adjuntos del correo electrónico (que más tarde también fue cubierto por el estándar S/MIME). |
| 1994 | Peter Shor concibe un algoritmo para ordenadores cuánticos que permite la factorización de enteros largos. Este es el primer problema interesante para el que los ordenadores cuánticos han prometido una importante aceleración, y que, por lo tanto, genera un gran interés en este tipo de ordenadores. |
| Agosto 1994 | El protocolo de cifrado SSL 1.0 es publicado por Netscape Communications y es soportado por todos los navegadores web. No obstante, el protocolo de transporte de SSL (TLS) no se limita a la aplicación de HTTPS. |
| Octubre 1995 | S/MIME, un mecanismo estándar para la seguridad del correo electrónico, es publicado como RFC 1847 y cuenta con el apoyo de todos los clientes de correo electrónico. S/MIME (Secure/Multipurpose Internet Mail Extensions) describe una manera consistente para enviar y recibir mensajes de correo electrónico seguros (firmados y/o cifrados). Se basa en el estándar de Internet MIME. Sin embargo, S/MIME no sólo se limita al correo. S/MIME y SSL son los protocolos criptográficos que se utilizan con mayor frecuencia en Internet. |
| 17 de Julio de 1998 | El ingenio de la EFF conocido como Deep Crack, rompe una clave DES con un ataque de texto claro conocido en 56 horas (Los RSA Laboratories lanzan el desafío DES II). |
| 19 de Enero de 1999 | Deep Crack y distributed.net rompen una clave DES con un ataque basado en texto claro conocido en 22 horas y 15 minutos (Los RSA Laboratories lanzan el desafío DES III) |
| Octubre 2000 | Tras la competición pública que ha durado 5 años, el algoritmo Rijndael es elegido por el NIST como el sucesor de DES y pasa de denominarse AES (Advanced Encryption Standard). |
| Desde el 2000 | Weil Pairing es utilizada para los nuevos esquemas de compromiso como IBE (Identity Based Encryption, que resultó ser más interesante desde un punto de vista teórico que desde un punto de vista práctico). |
| Agosto 2004 | En la conferencia Crypto 2004, los investigadores chinos muestran debilidades estructurales en común de las funciones de hash (MD5, SHA), lo que las hace vulnerables a ataques de colisión. Estas funciones de hash todavía se usan en casi todos los protocolos criptográficos. Los investigadores chinos no publicaron todos los detalles. |
| Mayo 2005 | Jens Franke y otros factorizan un número RSA-200 de 663 bits de longitud. |
| Abril 2007 | El protocolo WEP de codificación en LAN inalámbrica fue roto por tres investigadores del TU Darmstadt. Asumiendo suficiente tráfico de datos en la red, sólo se tarda unos dos minutos en obtener el 95% de todas las claves de codificación utilizadas. |
| Agosto 2007 | En la conferencia Crypto 2007 se mostró un algoritmo para romper el sistema inmovilizador utilizado en millones de coches. Durante la presentación, Eli Biham, Orr Dunkelman,entre otros, pudieron mostrar un ejemplo donde una correspondiente llave de coche se copió en 48 horas con la potencia de computación de 50 PCs. |
| Agosto 2007 | David Hulton y Joshua Laykey rompieron el algoritmo de codificación A5, de marca registrada, usado por muchos operadores de GSM. Esto implica que en redes móviles afectadas, incluso las más cortas llamadas de voz o los mensajes SMS pueden descifrarse fácilmente por un PC normal, mostrando así que "seguridad por oscuridad" no es un buen enfoque. |
| Diciembre 2007 | Se descifró el algoritmo de autenticación de las tarjetas de chip Mifare, el cual se usa en miles de aplicaciones por un billon de tarjetas expedidas. Sin embargo, la última generación (Mifare DESFire), que utiliza DES/3-DES, no se ve afectada. |
| Diciembre 2009 | Chris Paget y Karsten Nohl dieron a conocer, que su Proyecto de crackeo A5/1 construyó las tablas de compromiso espacio-tiempo de 2 Terabyte. A5/1 fue ahora definitivamente quebrado. |
| Diciembre 2009 | Jens Franke et al. factorizaron el número RSA-768 de 768 bits de longitud. |
Algo muy interesante es que en el Kamasutra, exista una de las descripciones más antiguas de encriptación por sustitución, este texto fue escrito el siglo IV d.C. por el sabio hindú Vatsyayana (Cuyo nombre es muy parecido al de esta página. ñ_ñ), sin embargo basado en manuscritos datados de más de 800 años (séc. IV a.C..).
El Kama-Sutra recomienda que las mujeres estudien 64 artes, incluyendo la culinaria, la forma de vestir, masaje y la preparación de perfumes. La lista también incluye algunos artes menos obvios como prestidigitación, ajedrez, encuadernación de libros y carpintería.
En la lista, la de número 45 es la mlecchita-vikalpa, el arte de la escritura secreta, indicada para ayudar las mujeres a esconder los detalles de sus relaciones. Una de las técnicas recomendadas es la de formar pares aleatorios de letras del alfabeto y después sustituir cada letra del texto original por la correspondiente en el par.
Ahora un ejemplo en PHP. ñ_ñ
[sourcecode language="php"]
< ?php
//Cifrado KamaSutra: SQleros.Com.Ar
$letras=array( array('A','D','H','I','K','M','O','R','S','U','W','Y','Z'),
array('V','X','B','G','J','C','Q','L','N','E','F','P','T')
);
function kamasutra($texto,$letras)
{ $ArregloAuxiliar=array();
for($i=0; $i
$ArregloAuxiliar[$letras[1][$i]]=$letras[0][$i];
}
$result = "";
for($i=0; $i
}
$blog="SQLeros.Com.Ar";
echo "
Cifrado KamaSutra: $blog";
echo "Letras:
';
echo 'Texto sin cifrar: '.$blog.'
';
echo 'Texto cifrado: '.kamasutra($blog,$letras).'
';
?>
[/sourcecode]
El resultado: Aquí, Un Saludo. Y Claro comenten!
Crear Servicio Web En PHP Con NüSoap
2.- Después descomprimes ese archivo y lo copias a tu sitio web (para este ejemplo el sitio se llama miwebservice y los archivos de NuSOAP los puse en un directorio llamado lib-nusoap.
3.- Luego ejecutas en tu Servidor MySQL el script de la Base de Datos db_productos.sql que lo puedes descargar desde esta pagina.
4.- Luego crea una pagina PHP (en este ejemplo la pagina se llama servicioweb.php) y codificas lo siguiente:
[sourcecode language="php"]
< ?php
require_once('lib-nusoap/nusoap.php');
$server = new soap_server;
$ns="http://localhost/aplicativo"; // espacio de nombres; Sitio donde estará alojado el web service
$server->configurewsdl('MiWebService'); //nombre del web service
$server->wsdl->schematargetnamespace=$ns;
/************ REGISTRANDO EL ARRAY A DEVOLVER(array de productos) **************/
$server->wsdl->addComplexType(
'ArregloProductos', // Nombre
'complexType', // Tipo de Clase
'array', // Tipo de PHP
'', // definición del tipo secuencia(all|sequence|choice)
'SOAP-ENC:Array', // Restricted Base
array(),
array(
array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:Productos[]') // Atributos
),
'tns:Productos'
);
/************ REGISTRANDO LA ESTRUCTURA DE DATOS PRODUCTOS **************/
$server->wsdl->addComplexType('Productos', 'complexType', 'struct', 'all', '',
array(
'ProductoID'=> array('name' => 'ProductoID','type' => 'xsd:int'),
'Nombre' => array('name' => 'Nombre', 'type' => 'xsd:string'),
'Precio' => array('name' => 'Precio', 'type' => 'xsd:string')
)
);
/*METODO DEL WEB SERVICE*/
function ListarProductos($estado){
if($estado!=''){
$db = new mysqli(); //mysqli exclusivo para usar procedimientos almacenados
$db_result = $db->connect ("localhost", "root", "","db_productos");
$sql=sprintf("call usp_ListarProductos('%s');",$estado); //intentando filtrar el SQL Injection
$result = $db->query($sql);
if (mysqli_errno($db)) printf("mySQL error %s\n", $db->error); //si es que hubo error se muestra
$db->close();
$i=0;
if($result->num_rows>0){
while($row = mysqli_fetch_assoc($result)){
$toc[$i]['ProductoID'] = $row["producto_id"];
$toc[$i]['Nombre'] = $row["nombre"];
$toc[$i]['Precio'] = $row["precio"];
$i++;
}
$result->free; //liberando memoria
return $toc;
}
}
return '';
}
/************ REGISTRANDO EL METODO **************/
$server->register(
'ListarProductos', // Nombre del Método
array('estado' => 'xsd:string' ), // Parámetros de Entrada
array('return' => 'tns:ArregloProductos') //Datos de Salida
);
/******PROCESA LA SOLICITUD Y DEVUELVE LA RESPUESTA*******/
$input = (isset($HTTP_RAW_POST_DATA)) ? $HTTP_RAW_POST_DATA : implode("\r\n", file('php://input'));
$server->service($input);
exit;
?>
[/sourcecode]
Si deseas puedes descargar el ejemplo completo desde aquí. Varios usuarios me han hecho la observación en la cual no funciona el código, esto es por el nombre de la carpeta comprimida que llame SQLeros-NüSoapEjemplo.zip, para que funcione bien solo cambienle el nombre por: SQLeros-NuSoapEjemplo.zip
También veremos como consumir el servicio desde C#,VB.Net y Java. Saludos