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:
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:
Cualquier duda, sugerencia o comentario es bien recibido
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, $i, 4);
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, $y, 2)];
}
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
Publicar un comentario