예제 #1
0
// Lê a matriz através de um arquivo .txt
void leMatriz(int n, Bloco matriz[20][20]) {
	FILE *fp;
	int i, j;
	char arq[20];
	// Cria as variável lermos o arquivo txt
	string fase("fase"), num2, txt(".txt");
	// Criamos o tipo ostringstream, para nos ajudar a converter int para string
	ostringstream tmp;
	tmp << n;
	num2 = tmp.str();
	// Concatenamos as 3 variáveis, e usamos ela completa para abrir o nome do arquivo que desejamos
	fase += num2 + txt;
	fp = fopen(fase.c_str(), "r");
	// Depois de aberto o arquivo, usamos ele para passar os dados necessários para nossa matriz de Blocos
	for (i = 0; i < 20;i++) {
		for (j = 0; j < 20; j++) {
			fscanf(fp, "%i ", &matriz[j][i].tipo);
			matriz[j][i].y = i * 32;
			matriz[j][i].x = j * 32;

		}
		fscanf(fp, "\n");
	}

	fclose(fp);
}
예제 #2
0
파일: seca.c 프로젝트: breezet/kaffeinesc
void decrypt_seca( unsigned char *k,unsigned char *d ) {
  /* k = clave de 128 bits (16 bytes),*/
  /* d = datos de 64 bits (8 bytes)*/
  unsigned char i,j,l,C,dt,D[4];
  
  /* preparacion de la clave*/
  C=0xff;
  for(j=0;j<4;++j) {
    for(i=0;i<16;++i)	{
      if((i&3)==0) ++C;
      k[i]^=T1[k[(15+i)&0xf]^k[(i+1)&0xf]^C]; 
    } 
  } /* manipulacion de los datos*/
  j=0; /* 16 rondas */
  for(i=0;i<16;++i) {
    for(l=0;l<4;++l) D[l]=d[l+4]; /* Copia d5..d8 a D1..D4 */
    j=(j+12)&0xf; /* selecciona clave apropiada*/
    fase(&k[j],D); /* modifica D con clave pertinente */
    /* paso 3 */
    for(l=0;l<4;++l) { /* modifica d bajo*/
      d[l]^=T2[D[TD[l]]]; /* paso 4*/
    }
    for(l=3;l!=0xff;--l) { /* modifica k usado*/
      k[j+l]^=T1[k[(j+l+1)&0xf]^k[(j+l+15)&0xf]^(15-i)]; 
    }
    if(i<15) { /* intercambia d altos y bajos */
      for(l=0;l<4;++l) { 
	dt=d[l];d[l]=d[4+l];d[4+l]=dt; 
      } 
    } 
  } 
}
예제 #3
0
파일: seca.c 프로젝트: breezet/kaffeinesc
void encrypt_seca( unsigned char *k,unsigned char *d ) { 
  /* Rutina de encriptacion, no modifica la clave */
  /* k=clave de 128 bits (16 bytes), d=datos de 64 bits (8 bytes) */
  unsigned char i,j,l,dt,D[4],kk[16];

  /* primero hace copia de la clave*/
  for(i=0;i<16;++i) kk[i]=k[i]; /* 16 rondas*/

  for(j=i=0;i<16;++i,j=(j+4)&0xf) { /* paso 1 */
    for(l=0;l<4;++l) { 
      kk[j+l]^=T1[kk[(j+l+1)&0xf]^kk[(j+l+15)&0xf]^i]; 
    } 
    if(i>0) { /* intercambia d altos y bajos */
      for(l=0;l<4;++l) {
	dt=d[l];d[l]=d[4+l];d[4+l]=dt; }
    } 
    for( l=0; l<4; ++l ) D[l]=d[l+4]; /* Copia d5..d8 a D1..D4 */
    fase( &kk[j],D ); /* modifica D con clave pertinente */
    /* paso 2 */
    for(l=0;l<4;++l) { /* modifica d bajo*/
      d[l]^=T2[D[TD[l]]]; 
    } 
  } 
}