miércoles, 21 de septiembre de 2011

Encriptación por el Método de las rutas

Se recomienda revisar Archivos



Descarga el Catálogo de rutas


Encriptar.h

#pragma once

class Encriptar
{
private:
wchar_t letraWrite,letraRead;
System::String^ encriptar(System::String^);
bool analizarCadena(System::String^);
public:
bool registrar(System::String^);
bool logear(System::String^);
};


Encriptar.cpp

#include "StdAfx.h"
#include "Encriptar.h"
#include "Rutas.h"
#include "stdio.h" //Para archivos

bool Encriptar::registrar(System::String^ cadenaRegistro)
{
if(analizarCadena(cadenaRegistro))
{
FILE *fichero;

fichero = fopen("D:/ClaveEncriptada.txt","w");//Para escribir y actualizar

cadenaRegistro = encriptar(cadenaRegistro);

//fpuct escribe un caracter en el archivo
for(int i=0;i<cadenaRegistro->Length;i++)
fputc(cadenaRegistro[i],fichero);

fclose(fichero);

return true;
}
else
return false;
}

bool Encriptar::logear(System::String^ cadenaLogin)
{
FILE *fichero;
fichero = fopen("D:/ClaveEncriptada.txt","r");

cadenaLogin = encriptar(cadenaLogin) + wchar_t(-1);
//Al leer un archivo se lee un caracter extraño, por eso agregamos este a la cadenaLogin para luego
//compararla con cadenaRegistro que es la que se lee del fichero

System::String^ cadenaRegistro = "";

while(!feof(fichero))//feof comprueba si estamos en el final del archivo
cadenaRegistro+=wchar_t(fgetc(fichero));
fclose(fichero);

if(cadenaLogin==cadenaRegistro)
return true;
else
return false;
}

bool Encriptar::analizarCadena(System::String^ cadena)
{
letraWrite = letraRead = cadena[0];

for(int i=1;i<cadena->Length;i++)
{
//Si el caracter no es una letra minuscula entonces es invalido
if(!cadena[i].IsLower(cadena[i]))
return false;

if(cadena[i]!=letraWrite)
letraRead=cadena[i];
}

//La idea es que la letra de escritura sea diferente a la de lectura
if(letraWrite==letraRead)
return false;
else
return true;
}

System::String^ Encriptar::encriptar(System::String^ cadena)
{
Rutas rutas;

//Escribimos en la matriz
switch(letraWrite)
{
case 'a':
rutas.writeA(cadena);break;
case 'b':
rutas.writeB(cadena);break;
case 'c':
rutas.writeC(cadena);break;
case 'd':
rutas.writeD(cadena);break;
case 'e':
rutas.writeE(cadena);break;
case 'f':
rutas.writeF(cadena);break;
case 'g':
rutas.writeG(cadena);break;
case 'h':
rutas.writeH(cadena);break;
case 'i':
rutas.writeI(cadena);break;
case 'j':
rutas.writeJ(cadena);break;
case 'k':
rutas.writeK(cadena);break;
case 'l':
rutas.writeL(cadena);break;
case 'm':
rutas.writeM(cadena);break;
case 'n':
rutas.writeN(cadena);break;
case 'o':
rutas.writeO(cadena);break;
case 'p':
rutas.writeP(cadena);break;
case 'q':
rutas.writeQ(cadena);break;
case 'r':
rutas.writeR(cadena);break;
case 's':
rutas.writeS(cadena);break;
case 't':
rutas.writeT(cadena);break;
case 'u':
rutas.writeU(cadena);break;
case 'v':
rutas.writeV(cadena);break;
case 'w':
rutas.writeW(cadena);break;
case 'x':
rutas.writeX(cadena);break;
case 'y':
rutas.writeY(cadena);break;
case 'z':
rutas.writeZ(cadena);break;
}

//Leemos de la matriz
switch(letraRead)
{
case 'a':
return rutas.readA();
case 'b':
return rutas.readB();
case 'c':
return rutas.readC();
case 'd':
return rutas.readD();
case 'e':
return rutas.readE();
case 'f':
return rutas.readF();
case 'g':
return rutas.readG();
case 'h':
return rutas.readH();
case 'i':
return rutas.readI();
case 'j':
return rutas.readJ();
case 'k':
return rutas.readK();
case 'l':
return rutas.readL();
case 'm':
return rutas.readM();
case 'n':
return rutas.readN();
case 'o':
return rutas.readO();
case 'p':
return rutas.readP();
case 'q':
return rutas.readQ();
case 'r':
return rutas.readR();
case 's':
return rutas.readS();
case 't':
return rutas.readT();
case 'u':
return rutas.readU();
case 'v':
return rutas.readV();
case 'w':
return rutas.readW();
case 'x':
return rutas.readX();
case 'y':
return rutas.readY();
case 'z':
return rutas.readZ();
}
}




Rutas.h

#pragma once
#define n 4

class Rutas
{
private:
wchar_t matriz[n][n];
int aumentarDisminuir(int,int);
int escritura(System::String^ cadena,int,int,int);
int zigZag(int);
public:
void writeA(System::String^);
void writeB(System::String^);
void writeC(System::String^);
void writeD(System::String^);
void writeE(System::String^);
void writeF(System::String^);
void writeG(System::String^);
void writeH(System::String^);
void writeI(System::String^);
void writeJ(System::String^);
void writeK(System::String^);
void writeL(System::String^);
void writeM(System::String^);
void writeN(System::String^);
void writeO(System::String^);
void writeP(System::String^);
void writeQ(System::String^);
void writeR(System::String^);
void writeS(System::String^);
void writeT(System::String^);
void writeU(System::String^);
void writeV(System::String^);
void writeW(System::String^);
void writeX(System::String^);
void writeY(System::String^);
void writeZ(System::String^);


System::String^ readA();
System::String^ readB();
System::String^ readC();
System::String^ readD();
System::String^ readE();
System::String^ readF();
System::String^ readG();
System::String^ readH();
System::String^ readI();
System::String^ readJ();
System::String^ readK();
System::String^ readL();
System::String^ readM();
System::String^ readN();
System::String^ readO();
System::String^ readP();
System::String^ readQ();
System::String^ readR();
System::String^ readS();
System::String^ readT();
System::String^ readU();
System::String^ readV();
System::String^ readW();
System::String^ readX();
System::String^ readY();
System::String^ readZ();
};


Rutas.cpp

#include "StdAfx.h"
#include "Rutas.h"

void Rutas::writeA(System::String^ cadena)
{
int index=0;

for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
index=escritura(cadena,index,i,j);
}

System::String^ Rutas::readA()
{
System::String^ cadenaEncriptada="";

for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cadenaEncriptada+=matriz[i][j];

return cadenaEncriptada;
}



void Rutas::writeB(System::String^ cadena)
{
int index=0;

for(int j=0;j<n;j++)
for(int i=0;i<n;i++)
index=escritura(cadena,index,i,j);
}

System::String^ Rutas::readB()
{
System::String^ cadenaEncriptada="";

for(int j=0;j<n;j++)
for(int i=0;i<n;i++)
cadenaEncriptada+=matriz[i][j];

return cadenaEncriptada;
}



void Rutas::writeC(System::String^ cadena)
{
int index=0;

for(int i=0;i<n;i++)
for(int j=n-1;j>=0;j--)
index=escritura(cadena,index,i,j);
}

System::String^ Rutas::readC()
{
System::String^ cadenaEncriptada="";

for(int i=0;i<n;i++)
for(int j=n-1;j>=0;j--)
cadenaEncriptada+=matriz[i][j];

return cadenaEncriptada;
}


void Rutas::writeD(System::String^ cadena)
{
int index=0;

for(int j=n-1;j>=0;j--)
for(int i=0;i<n;i++)
index=escritura(cadena,index,i,j);
}

System::String^ Rutas::readD()
{
System::String^ cadenaEncriptada="";

for(int j=n-1;j>=0;j--)
for(int i=0;i<n;i++)
cadenaEncriptada+=matriz[i][j];

return cadenaEncriptada;
}


void Rutas::writeE(System::String^ cadena)
{
int index=0;

for(int i=n-1;i>=0;i--)
for(int j=n-1;j>=0;j--)
index=escritura(cadena,index,i,j);
}

System::String^ Rutas::readE()
{
System::String^ cadenaEncriptada="";

for(int i=n-1;i>=0;i--)
for(int j=n-1;j>=0;j--)
cadenaEncriptada+=matriz[i][j];

return cadenaEncriptada;
}

void Rutas::writeF(System::String^ cadena)
{
int index=0;

for(int j=n-1;j>=0;j--)
for(int i=n-1;i>=0;i--)
index=escritura(cadena,index,i,j);
}

System::String^ Rutas::readF()
{
System::String^ cadenaEncriptada="";

for(int j=n-1;j>=0;j--)
for(int i=n-1;i>=0;i--)
cadenaEncriptada+=matriz[i][j];

return cadenaEncriptada;
}


void Rutas::writeG(System::String^ cadena)
{
int index=0;

for(int i=n-1;i>=0;i--)
for(int j=0;j<n;j++)
index=escritura(cadena,index,i,j);
}

System::String^ Rutas::readG()
{
System::String^ cadenaEncriptada="";

for(int i=n-1;i>=0;i--)
for(int j=0;j<n;j++)
cadenaEncriptada+=matriz[i][j];

return cadenaEncriptada;
}

void Rutas::writeH(System::String^ cadena)
{
int index=0;

for(int j=0;j<n;j++)
for(int i=n-1;i>=0;i--)
index=escritura(cadena,index,i,j);
}

System::String^ Rutas::readH()
{
System::String^ cadenaEncriptada="";

for(int j=0;j<n;j++)
for(int i=n-1;i>=0;i--)
cadenaEncriptada+=matriz[i][j];

return cadenaEncriptada;
}


void Rutas::writeI(System::String^ cadena)
{
int index=0;

int aumentar=1;//Si es +1 aumentará, si es -1 disminuir
int j=zigZag(aumentar);

for(int i=0;i<n;i++)
{
for(int k=0;k<n;k++)
{
index=escritura(cadena,index,i,j);

j=aumentarDisminuir(aumentar,j);
}

aumentar*=-1;
}
}


System::String^ Rutas::readI()
{
System::String^ cadenaEncriptada="";

int aumentar=1;//Si es +1 aumentará, si es -1 disminuir
int j=zigZag(aumentar);

for(int i=0;i<n;i++)
{
for(int k=0;k<n;k++)
{
cadenaEncriptada+=matriz[i][j];

j=aumentarDisminuir(aumentar,j);
}

aumentar*=-1;
}

return cadenaEncriptada;
}

void Rutas::writeJ(System::String^ cadena)
{
int index=0;

int aumentar=1;//Si es +1 aumentará, si es -1 disminuir
int i=zigZag(aumentar);

for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
{
index=escritura(cadena,index,i,j);

i=aumentarDisminuir(aumentar,i);
}

aumentar*=-1;
}
}

System::String^ Rutas::readJ()
{
System::String^ cadenaEncriptada="";

int aumentar=1;//Si es +1 aumentará, si es -1 disminuir
int i=zigZag(aumentar);

for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
{
cadenaEncriptada+=matriz[i][j];

i=aumentarDisminuir(aumentar,i);
}

aumentar*=-1;
}

return cadenaEncriptada;
}





void Rutas::writeK(System::String^ cadena)
{
int index=0;

int aumentar=-1;//Si es +1 aumentará, si es -1 disminuir
int j=zigZag(aumentar);

for(int i=0;i<n;i++)
{
for(int k=0;k<n;k++)
{
index=escritura(cadena,index,i,j);

j=aumentarDisminuir(aumentar,j);
}

aumentar*=-1;
}
}


System::String^ Rutas::readK()
{
System::String^ cadenaEncriptada="";

int aumentar=-1;//Si es +1 aumentará, si es -1 disminuir
int j=zigZag(aumentar);

for(int i=0;i<n;i++)
{
for(int k=0;k<n;k++)
{
cadenaEncriptada+=matriz[i][j];

j=aumentarDisminuir(aumentar,j);
}

aumentar*=-1;
}

return cadenaEncriptada;
}


void Rutas::writeL(System::String^ cadena)
{
int index=0;

int aumentar=1;//Si es +1 aumentará, si es -1 disminuir
int i=zigZag(aumentar);

for(int j=n-1;j>=0;j--)
{
for(int k=0;k<n;k++)
{
index=escritura(cadena,index,i,j);

i=aumentarDisminuir(aumentar,i);
}

aumentar*=-1;
}
}

System::String^ Rutas::readL()
{
System::String^ cadenaEncriptada="";

int aumentar=1;//Si es +1 aumentará, si es -1 disminuir
int i=zigZag(aumentar);

for(int j=n-1;j>=0;j--)
{
for(int k=0;k<n;k++)
{
cadenaEncriptada+=matriz[i][j];

i=aumentarDisminuir(aumentar,i);
}

aumentar*=-1;
}

return cadenaEncriptada;
}







void Rutas::writeM(System::String^ cadena)
{
int index=0;

int aumentar=-1;//Si es +1 aumentará, si es -1 disminuir
int j=zigZag(aumentar);

for(int i=n-1;i>=0;i--)
{
for(int k=0;k<n;k++)
{
index=escritura(cadena,index,i,j);

j=aumentarDisminuir(aumentar,j);
}

aumentar*=-1;
}
}


System::String^ Rutas::readM()
{
System::String^ cadenaEncriptada="";

int aumentar=-1;//Si es +1 aumentará, si es -1 disminuir
int j=zigZag(aumentar);

for(int i=n-1;i>=0;i--)
{
for(int k=0;k<n;k++)
{
cadenaEncriptada+=matriz[i][j];

j=aumentarDisminuir(aumentar,j);
}

aumentar*=-1;
}

return cadenaEncriptada;
}


void Rutas::writeN(System::String^ cadena)
{
int index=0;

int aumentar=-1;//Si es +1 aumentará, si es -1 disminuir
int i=zigZag(aumentar);

for(int j=n-1;j>=0;j--)
{
for(int k=0;k<n;k++)
{
index=escritura(cadena,index,i,j);

i=aumentarDisminuir(aumentar,i);
}

aumentar*=-1;
}
}


System::String^ Rutas::readN()
{
System::String^ cadenaEncriptada="";

int aumentar=-1;//Si es +1 aumentará, si es -1 disminuir
int i=zigZag(aumentar);

for(int j=n-1;j>=0;j--)
{
for(int k=0;k<n;k++)
{
cadenaEncriptada+=matriz[i][j];

i=aumentarDisminuir(aumentar,i);
}

aumentar*=-1;
}

return cadenaEncriptada;
}


void Rutas::writeO(System::String^ cadena)
{
int index=0;

int aumentar=1;//Si es +1 aumentará, si es -1 disminuir
int j=zigZag(aumentar);

for(int i=n-1;i>=0;i--)
{
for(int k=0;k<n;k++)
{
index=escritura(cadena,index,i,j);

j=aumentarDisminuir(aumentar,j);
}

aumentar*=-1;
}
}



System::String^ Rutas::readO()
{
System::String^ cadenaEncriptada="";

int aumentar=1;//Si es +1 aumentará, si es -1 disminuir
int j=zigZag(aumentar);

for(int i=n-1;i>=0;i--)
{
for(int k=0;k<n;k++)
{
cadenaEncriptada+=matriz[i][j];

j=aumentarDisminuir(aumentar,j);
}

aumentar*=-1;
}

return cadenaEncriptada;
}

void Rutas::writeP(System::String^ cadena)
{
int index=0;

int aumentar=-1;//Si es +1 aumentará, si es -1 disminuir
int i=zigZag(aumentar);

for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
{
index=escritura(cadena,index,i,j);

i=aumentarDisminuir(aumentar,i);
}

aumentar*=-1;
}
}


System::String^ Rutas::readP()
{
System::String^ cadenaEncriptada="";

int aumentar=-1;//Si es +1 aumentará, si es -1 disminuir
int i=zigZag(aumentar);

for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
{
cadenaEncriptada+=matriz[i][j];

i=aumentarDisminuir(aumentar,i);
}

aumentar*=-1;
}

return cadenaEncriptada;
}



void Rutas::writeQ(System::String^ cadena)
{
int index=0;

int i0=0,j0=0;

while(i0<n && j0<n)//i0,j0 desde 0,0 hasta n-1,n-1
{
int i=i0;
int j=j0;

while(i>=0 && j<n)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
index=escritura(cadena,index,i,j);

i--;
j++;
}

if(i0<n-1)
i0++;
else
j0++;
}
}


System::String^ Rutas::readQ()
{
System::String^ cadenaEncriptada="";

int i0=0,j0=0;

while(i0<n && j0<n)//i0,j0 desde 0,0 hasta n-1,n-1
{
int i=i0;
int j=j0;

while(i>=0 && j<n)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
cadenaEncriptada+=matriz[i][j];

i--;
j++;
}

if(i0<n-1)
i0++;
else
j0++;
}

return cadenaEncriptada;
}



void Rutas::writeR(System::String^ cadena)
{
int index=0;

int i0=0,j0=0;

while(i0<n && j0<n)//i0,j0 desde 0,0 hasta n-1,n-1
{
int i=i0;
int j=j0;

while(j>=0 && i<n)//i,j desde el inicio de la diagonal hasta el final de la misma (ver Catalogo)
{
index=escritura(cadena,index,i,j);

i++;
j--;
}

if(j0<n-1)
j0++;
else
i0++;
}
}


System::String^ Rutas::readR()
{
System::String^ cadenaEncriptada="";

int i0=0,j0=0;

while(i0<n && j0<n)//i0,j0 desde 0,0 hasta n-1,n-1
{
int i=i0;
int j=j0;

while(j>=0 && i<n)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
cadenaEncriptada+=matriz[i][j];

i++;
j--;
}

if(j0<n-1)
j0++;
else
i0++;
}

return cadenaEncriptada;
}



void Rutas::writeS(System::String^ cadena)
{
int index=0;

int i0=0,j0=n-1;

while(i0<n && j0>=0)//i0,j0 desde 0,n-1 hasta n-1,0
{
int i=i0;
int j=j0;

while(i>=0 && j>=0)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
index=escritura(cadena,index,i,j);

i--;
j--;
}

if(i0<n-1)
i0++;
else
j0--;
}
}


System::String^ Rutas::readS()
{
System::String^ cadenaEncriptada="";

int i0=0,j0=n-1;

while(i0<n && j0>=0)//i0,j0 desde 0,n-1 hasta n-1,0
{
int i=i0;
int j=j0;

while(i>=0 && j>=0)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
cadenaEncriptada+=matriz[i][j];

i--;
j--;
}

if(i0<n-1)
i0++;
else
j0--;
}

return cadenaEncriptada;
}



void Rutas::writeT(System::String^ cadena)
{
int index=0;

int i0=0,j0=n-1;

while(i0<n && j0>=0)//i0,j0 desde 0,n-1 hasta n-1,0
{
int i=i0;
int j=j0;

while(i<n && j<n)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
index=escritura(cadena,index,i,j);

i++;
j++;
}

if(j0>0)
j0--;
else
i0++;

}
}


System::String^ Rutas::readT()
{
System::String^ cadenaEncriptada="";

int i0=0,j0=n-1;

while(i0<n && j0>=0)//i0,j0 desde 0,n-1 hasta n-1,0
{
int i=i0;
int j=j0;

while(i<n && j<n)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
cadenaEncriptada+=matriz[i][j];

i++;
j++;
}

if(j0>0)
j0--;
else
i0++;

}

return cadenaEncriptada;
}

void Rutas::writeU(System::String^ cadena)
{
int index=0;

int i0=n-1,j0=n-1;

while(i0>=0 && j0>=0)//i0,j0 desde n-1,n-1 hasta 0,0
{
int i=i0;
int j=j0;

while(i>=0 && j<n)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
index=escritura(cadena,index,i,j);

i--;
j++;
}

if(j0>0)
j0--;
else
i0--;
}
}


System::String^ Rutas::readU()
{
System::String^ cadenaEncriptada="";

int i0=n-1,j0=n-1;

while(i0>=0 && j0>=0)//i0,j0 desde n-1,n-1 hasta 0,0
{
int i=i0;
int j=j0;

while(i>=0 && j<n)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
cadenaEncriptada+=matriz[i][j];

i--;
j++;
}

if(j0>0)
j0--;
else
i0--;
}

return cadenaEncriptada;
}



void Rutas::writeV(System::String^ cadena)
{
int index=0;

int i0=n-1,j0=n-1;

while(i0>=0 && j0>=0)//i0,j0 desde n-1,n-1 hasta 0,0
{
int i=i0;
int j=j0;

while(j>=0 && i<n)//i,j desde el inicio de la diagonal hasta el final de la misma (ver Catalogo)
{
index=escritura(cadena,index,i,j);

i++;
j--;
}

if(i0>0)
i0--;
else
j0--;
}
}


System::String^ Rutas::readV()
{
System::String^ cadenaEncriptada="";

int i0=n-1,j0=n-1;

while(i0>=0 && j0>=0)//i0,j0 desde n-1,n-1 hasta 0,0
{
int i=i0;
int j=j0;

while(j>=0 && i<n)//i,j desde el inicio de la diagonal hasta el final de la misma (ver Catalogo)
{
cadenaEncriptada+=matriz[i][j];

i++;
j--;
}

if(i0>0)
i0--;
else
j0--;
}

return cadenaEncriptada;
}



void Rutas::writeW(System::String^ cadena)
{
int index=0;

int i0=n-1,j0=0;

while(i0>=0 && j0<n)//i0,j0 desde n-1,0 hasta 0,n-1
{
int i=i0;
int j=j0;

while(i>=0 && j>=0)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
index=escritura(cadena,index,i,j);

i--;
j--;
}

if(j0<n-1)
j0++;
else
i0--;
}
}


System::String^ Rutas::readW()
{
System::String^ cadenaEncriptada="";

int i0=n-1,j0=0;

while(i0>=0 && j0<n)//i0,j0 desde n-1,0 hasta 0,n-1
{
int i=i0;
int j=j0;

while(i>=0 && j>=0)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
cadenaEncriptada+=matriz[i][j];

i--;
j--;
}

if(j0<n-1)
j0++;
else
i0--;
}

return cadenaEncriptada;
}

void Rutas::writeX(System::String^ cadena)
{
int index=0;

int i0=n-1,j0=0;

while(i0>=0 && j0<n)//i0,j0 desde n-1,0 hasta 0,n-1
{
int i=i0;
int j=j0;

while(i<n && j<n)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
index=escritura(cadena,index,i,j);

i++;
j++;
}

if(i0>0)
i0--;
else
j0++;
}
}


System::String^ Rutas::readX()
{
System::String^ cadenaEncriptada="";

int i0=n-1,j0=0;

while(i0>=0 && j0<n)//i0,j0 desde n-1,0 hasta 0,n-1
{
int i=i0;
int j=j0;

while(i<n && j<n)//i,j desde el incio de la diagonal hasta el final de la misma (ver Catalogo)
{
cadenaEncriptada+=matriz[i][j];

i++;
j++;
}

if(i0>0)
i0--;
else
j0++;
}

return cadenaEncriptada;
}


void Rutas::writeY(System::String^ cadena)
{
int index=0;

int i0=0;

while(i0<n)
{
int i=i0;
int j=0;

while(i<n)
{
index=escritura(cadena,index,i,j);

if(j<n-i0-1)
j++;
else
i++;
}

i0++;
}
}
System::String^ Rutas::readY()
{
System::String^ cadenaEncriptada="";

int i0=0;

while(i0<n)
{
int i=i0;
int j=0;

while(i<n)
{
cadenaEncriptada+=matriz[i][j];

if(j<n-i0-1)
j++;
else
i++;
}

i0++;
}

return cadenaEncriptada;
}


void Rutas::writeZ(System::String^ cadena)
{
int index=0;

int j0=0;

while(j0<n)
{
int i=0;
int j=j0;

while(j<n)
{
index=escritura(cadena,index,i,j);

if(i<n-j0-1)
i++;
else
j++;
}

j0++;
}
}
System::String^ Rutas::readZ()
{
System::String^ cadenaEncriptada="";

int index=0;

int j0=0;

while(j0<n)
{
int i=0;
int j=j0;

while(j<n)
{
cadenaEncriptada+=matriz[i][j];

if(i<n-j0-1)
i++;
else
j++;
}

j0++;
}

return cadenaEncriptada;
}


int Rutas::aumentarDisminuir(int aumentar, int x)
{
if(aumentar>0)//Si es +1 es probable que aumente
{
if(x<n-1)//Si no es n-1 aumentará
x++;
}
else//Si es -1 es probable que disminuya
{
if(x>0)//Si no es 0 disminuirá
x--;
}

return x;
}

int Rutas::escritura(System::String^ cadena,int index,int i, int j)
{
if(index==cadena->Length)
index=0;

matriz[i][j]=cadena[index];
return index + 1;
}

int Rutas::zigZag(int aumentar)
{

if(aumentar>0)//Si se comenzará aumentando...
return 0;
else //Si se comenzará disminuyendo...
return n-1;
}

Descarga la solución completa de Encriptación

No hay comentarios:

Publicar un comentario