 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
rockman2003 Master

Registrado: 27 Ene 2004Mensajes: 202Ubicación: Madrid
|
Publicado: Mar 18 Ago, 2009 10:48 pm Asunto: |
|
|
Traduciendo esta función a Java, me he dado cuenta que el código se puede quedar así...
| Código: | AnsiString Encriptar(unsigned char *cVariable)
{
AnsiString resultado="";
int que_clave[6] = {16,21,27,19,21,17};
int aux;
for(int i = 0, y = 0; i < strlen(cVariable);i++,y++) {
if (y>5) y = 0;
aux = cVariable[i] ^ que_clave[y];
resultado+=CHAR(aux);
}
return resultado;
} |
|
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Jue 17 Mar, 2016 2:02 pm Asunto: |
|
|
Angel,
Este código lo uso para el XE3 y va perfecto, pero estoy haciendo pruebas en el XE10 y da este error:
[bcc32 Error] Main.cpp(219): E2015 Ambiguity between 'std::pow(long double,int)' and 'std::pow(double,int)'
En esta linea:
nValor += StrToInt(cBin2.SubString(j,1)) * pow(2, (j - 1));
Se te ocurre que puede ser?
Un saludo.
Carlos
Edito:
Me acabo de fijar en el mensaje de rockman2003 y va compila bien, aun no lo he probado pero si funciona seria suficiente. _________________ Carlos J. Fernandez |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 17 Mar, 2016 4:27 pm Asunto: |
|
|
| Hola Carlos, puedes probar cambiando el 2 por 2.0 |
|
| Volver arriba |
|
 |
Carlos J. Fernandez Master


Registrado: 27 Oct 2004Mensajes: 574
|
Publicado: Jue 17 Mar, 2016 4:38 pm Asunto: |
|
|
| _Leo escribió: | | Hola Carlos, puedes probar cambiando el 2 por 2.0 |
Leo,
Jejeje perfecto
Muchas gracias amigo.
Carlos _________________ Carlos J. Fernandez |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Vie 08 Sep, 2017 8:59 am Asunto: |
|
|
Sigo con el tema de la encripyación (¡mira que lleva años esto vivo!). Buscando en un blog sobre Firebird he ido a dar con un código bastante interesante. Lo he adaptado a Builder y me queda así:
| Código: | AnsiString Encriptar(AnsiString Texto, char Modo)
{
AnsiString Salida = "";
int nNv;
unsigned char Clave[] = "891475632847596";
unsigned char Repite[] = "7915317786";
unsigned char *cTexto = Texto.c_str();
for (int i = 0, y = 0, z = 0; i < strlen(cTexto); i ++, y ++, z ++)
{
if (y > strlen(Clave))
y = 0;
if (z > strlen(Repite))
z = 0;
nNv = (char(cTexto[i]) + ((2 * Modo - 137) * (Clave[y] - 48) * (Repite[z] - 48))) % 256;
nNv = (nNv < 0 ? 256 : 0) + nNv;
Salida += char(nNv);
}
return Salida;
} |
El Modo que se declara en la función indica que hay que hacer: Si se pasa E encripta la cadena Texto; si se pasa D la desencripta. Así, por ejemplo, con esos valores que están ahí declarados si Texto vale Ángel Matilla C devuelve ù¿hy%wv„™¬´)a, y si pasamos esta última cadena como valor nos devuelve Ángel Matilla C.
En el blog viene explicado como funciona la rutina. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|