miércoles, 21 de septiembre de 2011

Encriptación mediante eliminación de espacios y repetidas

Se recomienda revisar Archivos



Encriptar.h

#pragma once

class Encriptar
{
public:
bool registrar(System::String^);
bool logear(System::String^);
private:
System::String^ encriptar(System::String^);
bool repetida(System::String^,int);
};


Encriptar.cpp


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

System::String^ Encriptar::encriptar(System::String^ cadena)
{
System::String^ cadenaEncriptada="";

//Eliminar espacios en blanco y repetidas
for(int i=0;i<cadena->Length;i++)
if(cadena[i]!=' ' && !repetida(cadena,i))
cadenaEncriptada+=cadena[i];

return cadenaEncriptada;
}

bool Encriptar::registrar(System::String^ 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);

if(!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::repetida(System::String^ cadena,int pose)//Verifica si el caracter actual esta repetido en los caracteres anteriores
{
for(int i=0;i<pose;i++)
if(cadena[pose]==cadena[i])
return true;

return false;
}

Descargar la solución completa de Encriptación

No hay comentarios:

Publicar un comentario