Título: Error al en/descifrar string C++ Publicado por: Kaxperday en 2 Septiembre 2015, 02:24 am Bueeeno, resulta que me resistía a crear este hilo, pero no me queda otro remedio tras horas de frustración.
Tengo una clase que saque del Rijandel a través de su code source de codeproyect. Esa clase en mi proyecto se llama "encriptador_1". Y bien creo una clave de 24 caracteres, ahora tengo que cifrar en bloque pues venga que comience la fiesta. Código
Salida: Citar 61 61 72 61 entrada: wu1394yvh 1034y v180934ync89103y4 0813480ycn10384yn081n348401 cifra: ÃÅäþ̵=C¾ descifra: 8╝ Ï┤─¸K{ç§░lI┐Ò┬ä%+2¨Ò▄┘f«ð¹º»½h pUq@ôMä°BÛ¤§p1ê¡┐e┐È╩µÒ¥Q▓UGø°±{!9¹L felizPresione una tecla para continuar . . . He de decir que me he dado cuenta que string.legth() devuelve caracteres incluyendo \0 en la string y strlen() solo hasta el primer \0. Como se puede observar no cifra correctamente, antes lo hice funcionar pero me daba error en el system("pause"), omg. Algo casca por ahí. Cojo una cadena la añados \0 hasta hacerla múltiplo, luego llamo a Riyandel.Encrypt(), y le paso un puntero char* del que he reservado memoria igual al tamaño de la cadena a cifrar, ese puntero tras llamada al método contiene la cadena cifrada. Esa cadena la paso a la string y repito el proceso. ¿Qué hago mal? Saludos. Edito: Por favor basta de banear la palabra mierd.a es muy usada en la comunidad, de hecho es la palabra que se me banea en el código #FREEMIERDA. Por cierto he reducido la cadena y he eliminado los espacios y me funciona (sale la cadena descifrada correctamente) pero el programa casca, al depurar dice que es el system("pause") pero creo que es algo de overflow. Saludos. EDICION DELICATESSE: solucionado rigth now, habia un overflow en el puntero, necesitaba mas memoria pues la cadena desenciptada tenía mas caracteres de los que podia abarcar el puntero. Código
Working fine muak mk, Kaxperday |