예제 #1
0
int main(){
	char chave[] = "";
	FILE *arq, *arqo, *arqw;
	arq = fopen("entrada-vigenere.txt", "r");
	arqo = fopen("texto-original.txt", "r");
	arqw = fopen("saida-vigenere.txt", "w");
	
	if(arq == NULL) printf("Não abriu");
	char dados[10000], dados1[10000];
	fgets(dados, 10000, arq);
	fgets(dados1, 10000, arqo);
	
	int i, j;
	char *ichave = (char *)malloc(sizeof(char)*strlen(dados));
	for(i=0; i<strlen(dados); i++){
		char carac_original = dados1[i];
		for(j=0; j<256; j++){
			int kdec = decodificar(dados[i], j);
			if(carac_original == kdec){
				ichave[i] = j;
			}
		}
	}
	printf("---------------\nChave descoberta: %s\n--------------------\n", ichave);
	fclose(arqw);
	return 0; 
}
예제 #2
0
char *sdecodifica(char *dados, int chave){
	char *ndados = (char *)malloc(sizeof(char)*strlen(dados));
	int i;
	for(i=0; i<strlen(dados); i++){
		ndados[i] = decodificar(dados[i], chave);
	}
	return ndados;
}
예제 #3
0
void MainWindow::on_actionDecode_triggered()
{
    QString text = ui->plainTextEdit_2->document()->toPlainText();
    QString aux = "",res="",msg="";
    int cantErrors = 0;
    QList<QString> listaErrors;
    int ind = 0,blocks=1;

    while (ind < text.length()){
        aux += text.at(ind);
        ind++;
        if (aux.length() == 12){
            res += decodificar(aux);
            if (bitErrorFlag != 0){
                cantErrors++;
                listaErrors.push_back(tr("(block ")+tr("").setNum(blocks)+tr(",")+tr(" bit ")+tr("").setNum(bitErrorFlag)+tr(")"));
            }
            blocks++;
            aux = "";
        }
        else if(ind == text.length()){
            while(aux.length() < 12) aux += tr("0");
            res += decodificar(aux);
            if (bitErrorFlag != 0){
                cantErrors++;
                listaErrors.push_back(tr("(block ")+tr("").setNum(blocks)+tr(",")+tr(" bit ")+tr("").setNum(bitErrorFlag)+tr(")"));

            }
            blocks++;
            aux = "";
        }
        bitErrorFlag = 0;
    }
    if (cantErrors > 0){
        msg+=tr("There are ")+tr("").setNum(cantErrors)+tr(" errors: ");
        for (int i=0; i<listaErrors.length(); i++)
            msg += listaErrors.at(i) + tr(",");
    }

    ui->plainTextEdit_3->setPlainText(msg);
    ui->plainTextEdit->clear();
    ui->plainTextEdit->setPlainText(res);
}
예제 #4
0
int main(){
	int chave = 200;
	FILE *arq;
	arq = fopen("entrada.txt", "r");
	if(arq == NULL) printf("Não abriu");
	char dados[10000];
	fgets(dados, 10000, arq);
	if(dados == NULL) printf("Não leu fgets");
	int i = 0;
	for(i=0; i<strlen(dados); i++){
		int k = (int)dados[i];
		int gerado = codificar(k);
		int decodificado = decodificar(gerado);
		printf(">%c - %c\n", gerado, decodificado);
	}
	return 0; 
}