Muchas gracias por tu comentario. ¿Como sería el modo para descifrar el contenido cifrado sin la clave correcta? Me interesa mucho el tema pero estoy algo verde. Muchas gracias.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
/*
*Title: crypt
*Description: It de/encrypt strings
*@param pass[]: string which we use like password
*@param text[]: string which we will encrypt
*@param x: false = encrypt, true = decrypt
*@param name[]: name of output
*@return text_length: text length
*/
void crypt(char pass[], char text[], bool x, char name[]) {
int pass_length;
int text_length;
int passPosition = 0; //Relative position in pass[]
int textPosition = 0; //Relative position in text[]
pass_length = length(pass);
text_length = length(text);
int sol; //output character
FILE *nom;
nom = fopen(name, "w");
for(textPosition = 0; textPosition < text_length; textPosition++) {
if(passPosition == pass_length) {
passPosition = 0;
}
if(x == false) {
sol = text[textPosition] + pass[passPosition];
while(sol > 126) {
sol -= 94;
}
} else {
sol = text[textPosition] - pass[passPosition];
while(sol < 32) {
sol += 94;
}
}
passPosition++;
fputc(sol, nom);
}
fclose(nom);
}
int main(int argc, char *argv[]) {
bool state; //false when encrypt, true when decrypt
bool ran = false; //false: not random generation, true: random generation
bool fil; //false: not file, true, with file
int cant = 0; //number of characters in random generation
char text[MAX_TEXT]; //imput character
char pass[MAX_PASS]; //Imput pass
char in[35]; //input file
char out[35]; //output file
//Flags options
int i;
for(i = 0; i < argc; i++) {
if(strcmp(argv[i], "-o") == 0) {
strcpy(out[0], argv[i + 1]);
i++;
}
if(strcmp(argv[i], "-f") == 0) {
strcpy(in[0], argv[i + 1]);
fil = true;
i++;
}
if(strcmp(argv[i], "-p") == 0) {
strcpy(pass[0], argv[i + 1]);
i++;
}
if(strcmp(argv[i], "-t") == 0) {
strcpy(text[0], argv[i + 1]);
fil = false;
i++;
}
if(strcmp(argv[i], "-e") == 0) {
state = false;
i++;
}
if(strcmp(argv[i], "-d") == 0) {
state = true;
i++;
}
if(strcmp(argv[i], "-r") == 0) {
ran = true;
cant = atoi(argv[i + 1]);
i++;
}
if(strcmp(argv[i], "-h") == 0) {
helpbox(); //In methods.c
return 0;
}
}
/*Título: Ejercicio 2
*Descripción: Calcula el cambio a base decimal, octal y hexadecimal
*Autor: José Luis Garrido Labrador (JoseluCross)
*Version: 1.0 - mar/16
*/
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
int clean_stdin(void);
void cambioBinario(int);
void imprimeResultado(int);
int main() {
int n; //Número que añadiremos
char c; //Carácter de control
bool control = false; //Variable para el control de entrada
do {
printf("Introduce un número en base decimal: ");
if(scanf("%d%c", &n, &c) != 2 || c != '\n') {
printf("El número %d%c no es válido\n", n, c);
clean_stdin();
control = false;
} else {
printf("prueba");
if(n >= 0) {
printf("El binario de %d es: ", n);
cambioBinario(n);
//cambioOctal(decimal);
//cambioHex(decimal);
control = true;
}
}
} while(control == false || n < 0);
return 0;
}
//Función para la limpieza del buffer del teclado
int clean_stdin() {
while(getchar() != '\n') ;
return 1;
}
/*
*Nombre: cambioBinario
*Descripción: Convierte un número decimal a binario
*@param n: número que convertiremos
*@author: JoseluCross
*/
void cambioBinario(int n) {
int x = 1; //Variable de longitud
//Asignamos tamaño de cifras que tendrá el número en binario
for(x = 1; pow(2,x) > n; x++) ;
int tam[x]; //El vector donde almacenaremos las cifras (para este procedimiento no se usará recursividad)
int p = 0; //Variable de posición
//Bucle para la asignación de cifras binarias
for(p = 0; p = x; p++) {
tam[p] = n % 2;
n = n / 2;
}
//Bucle para el envío a imprimir
for(p = x; p = 0; p--) {
imprimeResultado(tam[p]);
}
printf("\n");
}
/*
*Nombre: imprimeResultado
*Descripción: imprime el resultado de cada cambio
*@param a: valor que se imprimirá
*@author: JoseluCross
*/
void imprimeResultado(int a) {
printf("%d", a);
}
printf("El número %d%c no es válido\n",n,c)
int main() {
int n; //Número que añadiremos
char c; //Carácter de control
bool control = false; //Variable para el control de entrada
do {
printf("Introduce un número en base decimal: ");
if(scanf("%d%c", &n, &c) != 2 || c != '\n') {
printf("El número %d%c no es válido\n", n, c);
clean_stdin();
control = false;
} else {
printf("prueba");
if(n >= 0) {
printf("El binario de %d es: ", n);
cambioBinario(n);
control = true;
}
}
} while(control == false || n < 0);
return 0;
}
Cita de: wuwu8 en 21 Febrero 2016, 20:20 PM
#!/bin/sh
echo Introduzca el formato, 1 tar, 2 tar.gz, 3 tar.bz2
read format
if [ $format -eq 1 ];then
tar cf $1.tar $1
echo Se ha comprimido $1 en $1.tar
elif [ $format -eq 2 ];then
tar czf $1.tar.gz $1
echo Se ha comprimido $1 en $1.tar.gz
elif [ $format -eq 3 ];then
tar cjf $1.tar.bz2 $1
echo Se ha comprimido $1 en $1.tar.bz2
else
echo Formato no incluido, reinicie el script
fi
La variable format dentro del if va sin comillas y los iguales se pone -eq (=)