#include #include #include void ver_binario(unsigned int x){ unsigned int a=0; for (int i= sizeof(unsigned int)*8-1; i>=0; --i) { if ( a != 0 || (x >> i) != 0 ) { a = 1; printf("%u",x>>i & 1 ); } } if ( a !=1 ) { printf("%d", 0); } printf("\n"); } void enmascarado(int n, int a, int b){ int mascara=0; for (int i = 0; i < b-1; ++i) { if (i < (b-a) ) { mascara = mascara | 1; mascara = mascara << 1; } else mascara = mascara << 1; if (i == b-2 && a == 0) { mascara = mascara | 1; } } ver_binario(n & mascara); } void ver_binario_c(char c){ char a=0; for (int i= sizeof(char)*8-1; i>=0; --i) { if ( a != 0 || (c >> i) != 0 ) { a = 1; printf("%d",c>>i & 1 ); } } if ( a !=1 ) { printf("%d", 0); } printf("\n"); } char create_mask( int a, int b){ char mascara=0; for (int i = 0; i < b-1; ++i) { if (i < (b-a) ) { mascara = mascara | 1; mascara = mascara << 1; } else mascara = mascara << 1; if (i == b-2 && i< b-a) { mascara = mascara | 1; } if (i == b-2 && a == 0) { mascara = mascara | 1; } } return mascara; } void cifrado(char* msj, char* clave ){ int size_msj = strlen(msj); int size_clave = strlen (clave); int k = 0; for (int i = 0; i < size_msj; ++i) { printf("%c",( msj[i] ^ clave[k] ) & create_mask(0,6) | msj[i] & create_mask(6,7) ); k++; if ( size_clave == k) { k = 0; } } printf("\n"); } int main(int argc, char *argv[]) { if ( argc < 1 ) { printf("NĂºmero de parĂ¡metros insuficientes:\n"); } else{ if (!strcmp(argv[1],"VER_BINARIO")) { ver_binario(atoi(argv[2])); } if (!strcmp(argv[1],"ENMASCARADO")) { enmascarado(atoi(argv[2]),atoi(argv[3]),atoi(argv[4])); } if (!strcmp(argv[1],"CIFRADO")) { cifrado(argv[2],argv[3]); } } }