Mostrando entradas con la etiqueta comenta code. Mostrar todas las entradas
Mostrando entradas con la etiqueta comenta code. Mostrar todas las entradas

Criptografía escalar [ PHP ]

Sería muy osado por mi parte decir que el método es mío, aunque quizá lo sea, la verdad se me ocurrió en clase de matemáticas.

El método se basa en el cálculo del producto escalar mediante dos vectores y me atrevo a decir, sin demasiado convencimiento, que es de vía única pero que los expertos comenten…

Un ejemplo:

Teniendo los vectores v(1,3) y w(2,1).

El producto escalar se calcula de la siguiente forma:
v*w = (1*2) + (3*1) = 2 + 3 = 5

Esta fórmula de vectores y puntos la aplicamos a una serie de símbolos siguiendo estructuras de vectores.

Es decir, a cada símbolo le asignamos un valor y dos símbolos representan un vector.

La cadena de símbolos es la siguiente:

!"#$%&'()*+-./0123456789:;<=>
?@ABCDEFGHIJKLMNOPQRSTUVWX
YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Siguiendo el orden de la tabla ascci y quitando algún que otro carácter.

Así en la cadena “Programmers Team

Los 2 primeros vectores son:
v = (p,r)
w= (o,g)

Los substituimos por su correspondiente valor numérico v=(78,80), w=(77,69) {si no me equivoqué} y se aplica la fórmula.

v *w = (78*77) + (80*69) = 6006 + 5520 = 11526

La conversión toma de dos en dos números. 11 (-), 52 (V), 6 (')

siendo su conversión a string -V'
En definitiva, la encriptación escalar de Prog es -V’
De Programmers team |`!+j&-(T;!
De Latino Hack q3!oI!!
De Bl4ck-P0rtal Wx!C\!-+)
de CUH .X!
y para finalizar de ~ Syntax - Error ~ -j)oO!{^!!

Ahora solo resta dejar el código:

<?php
form
();
$cad explode(' ',"! \" # $ % & ' ( ) * + - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [  ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~");
$men str_replace(' ','',$_POST['message']);

for (
$i 0$i strlen($men); $i += 4) {
   
$cod substr($men$i4);

   for (
$x 0$x <= 3$x ++) {
      if (! 
$cod[$x]) {
         
$cod[$x] = "!";
      }
   }

   
$v1 explode(',',array_search($cod[0], $cad).','.array_search($cod[1], $cad));
   
$v2 explode(',',array_search($cod[2], $cad).','.array_search($cod[3], $cad));
   
   
$escalar $v1[0] * $v2[0] + $v1[1] * $v2[1];

   for (
$y 0$y <= strlen($escalar); $y += 2)
      
$final .= $cad[substr($escalar$y2)];

}

echo 
'<b>Resultado encriptado:</b><br />'.$final;

function 
form() {
   echo 
'<form action="'.$_SERVER['PHP_SELF'].'" method="post">
         Mensaje: <input type="text" name="message" value="'
.$_POST['message'].'" />
         <input type="submit" name="send" value="Enviar">
        </form>
   '
;   
}
?>


Cualquier duda, sugerencia o comentario es bien recibido

Obtener la dirección IP [PHP]

Hoy vamos a comentar una función con la que me topé por internet para obtener una ip


<?php
function getIP() {
    if (isset(
$_SERVER)) {
    if (isset(
$_SERVER['HTTP_X_FORWARDED_FOR'])) {
    return 
$_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
    return 
$_SERVER['REMOTE_ADDR'];
    }
    } else {
    if (isset(
$GLOBALS['HTTP_SERVER_VARS']['HTTP_X_FORWARDER_FOR'])) {
    return 
$GLOBALS['HTTP_SERVER_VARS']['HTTP_X_FORWARDED_FOR'];
    } else {
    return 
$GLOBALS['HTTP_SERVER_VARS']['REMOTE_ADDR'];
    }
    }
}
 
$ip getIP();  
?>


Es una función muy simple, primero comprueba si existe el array global $_SERVER en caso de que no exista intenta hacerlo lo mismo pero mediante el array $GLOBALS.
Algunos proxyes dejan la ip del usuario en HTTP_X_FORWARDED_FOR, por esta razón primero comprobamos si exsite, en caso de que exista esa es la IP real.
Sino tomamos el valor REMOTE_ADDR.

Este script, como todos los de GETIP, no garantiza que la ip tomada sea la verdadera pero tienes mas probabilidades que con otros que he visto en la red

Rotación de imagenes con JavaScript

Hoy es domingo y he tenido un día ajetreado así que a diferencia de otros días les dejo un code muy sencillo en javascript del cual pedian una ayuda en LH

Hace una rotación de X imágenes cada Y segundos durante un tiempo indefinido.

<html>
<head>
<title>Secuencia</title>

<script language="javascript">

var SecuenciaEjecutandose = false
var SecuenciaID = null
var imagen = 4
var duracion = 1000

if ( CompruebaVersion() ) {
imagenes = new CreaArray( 4 )
imagenes[1].src = "imagen1.jpg"
imagenes[2].src = "imagen2.jpg"
imagenes[3].src = "imagen3.jpg"
imagenes[4].src = "imagen4.jpg"
}

function CompruebaVersion() {
if (navigator.appVersion.charAt(0) >= 3 && document.images) 

return true
else return false
}

function CreaArray(n) {
this.length = n
for (var i = 1; i<=n; i++) {
this[i] = new Image()
}
return this
}

function DetenerSecuencia () {
if( SecuenciaEjecutandose )
clearTimeout(SecuenciaID)
SecuenciaEjecutandose = false
imagen = 0
}

function MostrarSecuencia () {
if (CompruebaVersion()) {
document.images["secuencia"].src = imagenes[imagen].src
imagen++
if ( imagen == 5 )
imagen = 1
}
SecuenciaID = setTimeout(" MostrarSecuencia() ", duracion)
SecuenciaEjecutandose = true
}

function IniciarSecuencia () {
DetenerSecuencia()
imagen = 1
MostrarSecuencia()
}

</script>

</head>

<body onLoad="IniciarSecuencia()">
<img src="imagen1.jpg" width="100" height="100" alt="Secuencia" 

name="secuencia"> 

</body>
</html>

 

Como se aprecia en el code el script carga 4 imágenes en un array y esas imágenes las va pasando por una etiqueta llamada secuencia.

saludos
nax

Cifrado vigenère [code PHP]

Hoy os presento un code sencillo que se comentó por DragonJAR y como estaba aburrido decidí crear un cifrador.

El cifrado es vigenerè y es, básicamente, el cifrado cesar un poco mas avanzado.

Como yo no soy bueno comentado la historia me centro en las matemáticas:

El cifrado recive 3 parámetros:

- Mensaje a cifrar
- Clave
- Cantidad de letras del abecedario (este 3er parámetro es una constante)

La fórmula del cifrado vigenère es:

Yi = (Xi + Zi) mod T

Donde:

Xi = letra original
Zi = letra clave

T = 26 (letras alfabeto -1 , ya que empezamos de 0)

Un ejemplo:

Xi = A
Zi = B

Yi = (A + B) mod 26
Yi = (0 + 1) mod 26

Yi = 1 = B

Siendo:
A = 0
Z = 26

El código es:

<?php

form
();
$message strtolower(str_replace("n"," ",$_POST['message'])); $clavestrtolower($_POST['clave']); $final "";
$letters explode(' ',"a b c d e f g h i j k l m n o p 

q r s t u v w x y z"); $saltar explode(' ''º Âª  ! | " @ Â· # $ ~ % 
â�¬ & Â¬ / ( ) = ? ' Â¿ Â¡ ^ ` [ ] + * Â¨ Â´ { } Ã§ - _ . : , ;');

for (
$i = 0, $x = 0 ; $i < strlen($message); $i++, $x++) {
   
   if (
$x >= strlen($clave))
      
$x = 0;
   
   if (in_array(
$message[$i],$saltar) || $message[$i] === ' ') {
      
$final .= $message[$i];
      
$x--;
   }else {
      
      
$vigenere = (array_search($message[$i],$letters) + 

array_search($clave[$x],$letters) ) % 26 ;

      
$final .= $letters[$vigenere];

   }
}

echo '<b>Resultado encriptado:</b><br />'.strtoupper(
$final);

function form() {
   echo '<form action="'.
$_SERVER['PHP_SELF'].'" method="post">
         Mensaje: <br /> 
            <textarea name="message">'.
$_POST['message'].'</textarea><br />
         Clave: <input type="text" name="clave" value="'

.$_POST['clave'].'" />
         <input type="submit" name="send" value="Enviar">
        </form>
   ';   
}

?>


La cadena $saltar se ha desformatado al convertir el código así que la dejo aparte:

$saltar = explode(' ', 'º ª \ ! | " @ · # $ ~ % € & ¬ / ( ) = ? \' ¿ ¡ ^ ` [ ] + * ¨ ´ { } ç - _ . : , ;');


Explicación:

Básicamente lo que hacemos es crear un array del abecedario, para asignar de forma rápida el 0 = a y z = 26.
Después de eso tomamos un bucle donde usaremos 2 contadores, $i para el mensaje y $x para la clave.

La variable que hará salir del bucle es $i, ya que cuando se acabe el mensaje se acabará el bucle.
$x sin embargo se repetirá cada vez que se termine.

La variable $saltar nos permite saltarnos ciertos carácteres que no forman parte del abecedario y disminuimos $x en 1 ya que no usamos la letra clave para encriptar.

Luego ya solo es cuestión de buscar la letra del mensaje en el array y tomar el valor de la key sumarlo al valor de la letra clave y hacer mod entre 26.

Ejemplo de uso:


Espero que les guste y quizá con mas tiempo hago el decrypter.

PHP 5 stars un rating con estilo

PHP 5 stars es una aplicación del tipico "rate me" con 5 estrellas.

Es algo diferente a las demás y me gusta el toque que deja

Para usarlo se necesita sqlite en el apartado PDO de nuestro hosting.

Saberlo es muy simple, simplemente creamos un script

<?php phpinfo(); ?>

lo subimos al hosting y buscamos sqli en el apartado PDO

Click here to enlarge

Ejemplo de uso:

Agregamos esto al head:



<link rel="stylesheet" type="text/css" href="rating/rating.css" media="screen"/>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" >google.load("jquery","1.3.2");</script>
<script type="text/javascript" src="rating/rating.js"></script>
<?php include('rating/rating.php'); ?>


y agregamos esto a cada objeto que queremos que tenga las estrellas:

<?php rating_form("unique_table_name"); ?> a cada elemento que queramos tener las estrellas.

donde unique_table_name es el nombre de la tabla en slqi

Demo, descarga y web del autor

saludos

Comentando el code: Milw0rm Feeder

Bueno como no sabia de que escribiros hoy, y ya hacia unos días que no actualizo las entradas, pensé que seria buena idea idear una "sección" de comentarios sobre codes.

Hoy os traigo un Milw0rm Feeder que encontré por Bl4ck-P0rtal el code en cuestión es:

<?php
#goast BHF

#modules
define('MILW0RM','10:milw0rm.com/rss.php:Milw0rm');

function 
goast_rss($type,$i)
{
 
$type explode(':',$type);

 
$xx file_get_contents('http://'.$type[1]);

 if(
$type[0]>$i){'ERROR:The MAX listing of module '.$type[3].' is set to '.$type[0];}

 
$CRUNCH 0;

 while(
$CRUNCH<=$type[0])
 {
  
$x[0] = explode('</item>',$xx);
  
$x[1] = explode('<item>',$x[0][$CRUNCH]);
  
$x[2] = explode('title',$x[1][1]);
  
$x[3] = explode('link',$x[1][1]);

  
$xtitle substr($x[2][1],1);$xtitle substr($xtitle,0,strlen($xtitle)-2);
  
$xurl substr($x[3][1],1);$xurl substr($xurl,0,strlen($xurl)-2);

  
$out "<a href='$xurl'>$xtitle</a>";

  
$CRUNCH+=1;
  
$data[$CRUNCH] = $out;
 }

 return 
$data[$i];
}

echo 
goast_rss(MILW0RM,1).'<p />';
echo 
goast_rss(MILW0RM,2).'<p />';

?>


Por funcionalidad no hay nada que objetar, el código funciona
A simple vista se entiende que la sintaxis es: goast_rss("url", "numero de entrada");
Por lo que podemos recomendar que, en vez de el numero de entrada se especifique la cantidad de entradas a ver y a partir de cual... algo así goast_rss("url","cantidad", "inicio");

El tema de crearlo como una función, al principio lo vi con malos ojos, pero si tenemos en cuenta que así el code puede ser reutilizado no hay problema alguno.

El tiempo de ejecución es algo elevado: 1.3430 segundos, elevado entiendase en un localhost y un code tan corto.

Como "cosa curiosa" destaco el uso de file_get_contents() para capturar el HTML de la página y no usar el módulo SimpleXML para tratar con la dirección: http://milw0rm.com/rss.php de una forma mas eficaz.

Conclusión: Es un código aceptable, e interesante para practicar las funciones explode() y substr(). Pero en mi opinión podria ser mejor y más simple usando simpleXML