¿Encriptación y desencriptación?

Estado
Cerrado para nuevas respuestas.

SimP

Thalion
Ex-Staff
¿Alguien conoce métodos de encriptación y desencriptación en C++ y la cómo funciona? Busqué en internet y encontré cosas pero no entiendo bien como funciona.

¡Saludos!
 
W

Wolftein

Invitado
Tenes 2 tipos de encriptacion:

1) Hash, lo cual se produce un numero unico para una serie de bytes (Ya sea una palabra, o algo), donde cada serie se le genera uno y solo un posible valor (Si la formula no tiene colision). Este sistema es el mas seguro, pero no puede ser revertido, por esa misma razon solo se usa para contraseñas. Ejemplos (MD5, SHA, SCRYPT).

2) Aquella encriptacion que puede ser desencriptada, mediante una segunda funcion (Haciendo la reversa a lo que se hizo). Los mas conocidos son RC4, Blowfish, entre otros. Te recomiendo que busques en google RC4 y aprendas como funciona realmente.

http://es.wikipedia.org/wiki/RC4
http://es.wikipedia.org/wiki/Blowfish

http://es.wikipedia.org/wiki/Criptograf%C3%ADa
http://es.wikipedia.org/wiki/Criptograf ... C3%A9trica
http://es.wikipedia.org/wiki/Criptograf ... C3%A9trica
http://es.wikipedia.org/wiki/ROT13 (El que todos usan aca)
 

SimP

Thalion
Ex-Staff
Wolftein dijo:
Tenes 2 tipos de encriptacion:

1) Hash, lo cual se produce un numero unico para una serie de bytes (Ya sea una palabra, o algo), donde cada serie se le genera uno y solo un posible valor (Si la formula no tiene colision). Este sistema es el mas seguro, pero no puede ser revertido, por esa misma razon solo se usa para contraseñas. Ejemplos (MD5, SHA, SCRYPT).

2) Aquella encriptacion que puede ser desencriptada, mediante una segunda funcion (Haciendo la reversa a lo que se hizo). Los mas conocidos son RC4, Blowfish, entre otros. Te recomiendo que busques en google RC4 y aprendas como funciona realmente.

http://es.wikipedia.org/wiki/RC4
http://es.wikipedia.org/wiki/Blowfish

http://es.wikipedia.org/wiki/Criptograf%C3%ADa
http://es.wikipedia.org/wiki/Criptograf ... C3%A9trica
http://es.wikipedia.org/wiki/Criptograf ... C3%A9trica
http://es.wikipedia.org/wiki/ROT13 (El que todos usan aca)
Genial, y encontré uno, ¿puede ser que se llame XOR?

El código fuente es algo así:
C++:
#include <iostream>
 
using namespace std;
 
string encryptDecrypt(string toEncrypt) {
    char key = 'K'; //Any char will work
    string output = toEncrypt;
    
    for (int i = 0; i < toEncrypt.size(); i++)
        output[i] = toEncrypt[i] ^ key;
    
    return output;
}
 
int main(int argc, const char * argv[])
{
    string encrypted = encryptDecrypt("kylewbanks.com");
    cout << "Encrypted:" << encrypted << "<span style="color: #666666; font-weight: bold;">\n"</span>;
    
    string decrypted = encryptDecrypt(encrypted);
    cout << "Decrypted:" << decrypted << "<span style="color: #666666; font-weight: bold;">\n"</span>;
    
    return 0;
}
Y el output:
C++:
Encrypted: 2'.<)*% 8e($&
Decrypted:kylewbanks.com
No sé si será un método que valga la pena, pero por leer literal el código ¿está haciendo que el output sea el string que vos escribiste ^ la key , que en ese caso es K?

¡Saludos!
 
W

Wolftein

Invitado
SimP dijo:
Wolftein dijo:
Tenes 2 tipos de encriptacion:

1) Hash, lo cual se produce un numero unico para una serie de bytes (Ya sea una palabra, o algo), donde cada serie se le genera uno y solo un posible valor (Si la formula no tiene colision). Este sistema es el mas seguro, pero no puede ser revertido, por esa misma razon solo se usa para contraseñas. Ejemplos (MD5, SHA, SCRYPT).

2) Aquella encriptacion que puede ser desencriptada, mediante una segunda funcion (Haciendo la reversa a lo que se hizo). Los mas conocidos son RC4, Blowfish, entre otros. Te recomiendo que busques en google RC4 y aprendas como funciona realmente.

http://es.wikipedia.org/wiki/RC4
http://es.wikipedia.org/wiki/Blowfish

http://es.wikipedia.org/wiki/Criptograf%C3%ADa
http://es.wikipedia.org/wiki/Criptograf ... C3%A9trica
http://es.wikipedia.org/wiki/Criptograf ... C3%A9trica
http://es.wikipedia.org/wiki/ROT13 (El que todos usan aca)
Genial, y encontré uno, ¿puede ser que se llame XOR?

El código fuente es algo así:
C++:
#include <iostream>
 
using namespace std;
 
string encryptDecrypt(string toEncrypt) {
    char key = 'K'; //Any char will work
    string output = toEncrypt;
    
    for (int i = 0; i < toEncrypt.size(); i++)
        output[i] = toEncrypt[i] ^ key;
    
    return output;
}
 
int main(int argc, const char * argv[])
{
    string encrypted = encryptDecrypt("kylewbanks.com");
    cout << "Encrypted:" << encrypted << "<span style="color: #666666; font-weight: bold;">\n"</span>;
    
    string decrypted = encryptDecrypt(encrypted);
    cout << "Decrypted:" << decrypted << "<span style="color: #666666; font-weight: bold;">\n"</span>;
    
    return 0;
}
Y el output:
C++:
Encrypted: 2'.<)*% 8e($&
Decrypted:kylewbanks.com
 
No sé si será un método que valga la pena, pero por leer literal el código ¿está haciendo que el output sea el string que vos escribiste ^ la key , que en ese caso es K?

¡Saludos!
Bien, ese es la encriptacion por la que se debe empezar y las mas basica de todas :). Si se llama XOR porque hace lo que la palabra dice (X Exclusive OR), http://en.wikipedia.org/wiki/Exclusive_or

Otra encriptacion basica seria sumarle a cada byte un numero y despues restarle ese mismo numero.
 

SimP

Thalion
Ex-Staff
Wolftein dijo:
SimP dijo:
Wolftein dijo:
Tenes 2 tipos de encriptacion:

1) Hash, lo cual se produce un numero unico para una serie de bytes (Ya sea una palabra, o algo), donde cada serie se le genera uno y solo un posible valor (Si la formula no tiene colision). Este sistema es el mas seguro, pero no puede ser revertido, por esa misma razon solo se usa para contraseñas. Ejemplos (MD5, SHA, SCRYPT).

2) Aquella encriptacion que puede ser desencriptada, mediante una segunda funcion (Haciendo la reversa a lo que se hizo). Los mas conocidos son RC4, Blowfish, entre otros. Te recomiendo que busques en google RC4 y aprendas como funciona realmente.

http://es.wikipedia.org/wiki/RC4
http://es.wikipedia.org/wiki/Blowfish

http://es.wikipedia.org/wiki/Criptograf%C3%ADa
http://es.wikipedia.org/wiki/Criptograf ... C3%A9trica
http://es.wikipedia.org/wiki/Criptograf ... C3%A9trica
http://es.wikipedia.org/wiki/ROT13 (El que todos usan aca)
Genial, y encontré uno, ¿puede ser que se llame XOR?

El código fuente es algo así:
C++:
#include <iostream>
 
using namespace std;
 
string encryptDecrypt(string toEncrypt) {
    char key = 'K'; //Any char will work
    string output = toEncrypt;
    
    for (int i = 0; i < toEncrypt.size(); i++)
        output[i] = toEncrypt[i] ^ key;
    
    return output;
}
 
int main(int argc, const char * argv[])
{
    string encrypted = encryptDecrypt("kylewbanks.com");
    cout << "Encrypted:" << encrypted << "<span style="color: #666666; font-weight: bold;">\n"</span>;
    
    string decrypted = encryptDecrypt(encrypted);
    cout << "Decrypted:" << decrypted << "<span style="color: #666666; font-weight: bold;">\n"</span>;
    
    return 0;
}
Y el output:
C++:
Encrypted: 2'.<)*% 8e($&
Decrypted:kylewbanks.com
 
 
No sé si será un método que valga la pena, pero por leer literal el código ¿está haciendo que el output sea el string que vos escribiste ^ la key , que en ese caso es K?

¡Saludos!
Bien, ese es la encriptacion por la que se debe empezar y las mas basica de todas :). Si se llama XOR porque hace lo que la palabra dice (X Exclusive OR), http://en.wikipedia.org/wiki/Exclusive_or

Otra encriptacion basica seria sumarle a cada byte un numero y despues restarle ese mismo numero.
Hermoso, muchas gracias por la ayuda, cierren ^^.

¡Saludos!
 
Estado
Cerrado para nuevas respuestas.
Arriba