Mostrando entradas con la etiqueta Archivos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Archivos. Mostrar todas las entradas

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