コード例 #1
0
ファイル: blowfish.cpp プロジェクト: webmaster128/botan
/*
* Generate one of the Sboxes
*/
void Blowfish::generate_sbox(secure_vector<uint32_t>& box,
                             uint32_t& L, uint32_t& R,
                             const uint8_t salt[],
                             size_t salt_length,
                             size_t salt_off) const
   {
   for(size_t i = 0; i != box.size(); i += 2)
      {
      if(salt_length > 0)
         {
         L ^= load_be<uint32_t>(salt, (i + salt_off) % (salt_length / 4));
         R ^= load_be<uint32_t>(salt, (i + salt_off + 1) % (salt_length / 4));
         }

      for(size_t r = 0; r != 16; r += 2)
         {
         L ^= m_P[r];
         R ^= BFF(L, m_S);

         R ^= m_P[r+1];
         L ^= BFF(R, m_S);
         }

      uint32_t T = R; R = L ^ m_P[16]; L = T ^ m_P[17];
      box[i] = L;
      box[i+1] = R;
      }
   }
コード例 #2
0
ファイル: main.c プロジェクト: automagicly/drenchAI
int main(int argc, char* argv[]){
	Parameters param;
	param.max = 30;
	
	srand(time(NULL));

	handleArgs(argc, argv, &param);

	if (param.marathon){
		Boolean foundSolution = false;
		do {
			if (initGameFromTerminal(&param.game) !=  DS_OK){
				showError("INVALID GAME ENTERED");
				exit(EXIT_FAILURE);
			}
			fflush(stdin);
			// printf("min moves: %hhu\n", minMoves(&param.game));
			// getchar();
			foundSolution = BFF(&param.game, param.max);
			param.max--;
			printf("\n\n");
			// getchar();
		} while(foundSolution && param.max > 0);
	}else{
		// printf("min moves: %hhu\n", minMoves(&param.game));
		// getchar();
		if(param.decompress){
			printBoard(&param.game);
		}else{
			BFF(&param.game, param.max);
			printf("\n\n");
		}
	}

	return 0;
}
コード例 #3
0
ファイル: blowfish.cpp プロジェクト: webmaster128/botan
/*
* Blowfish Decryption
*/
void Blowfish::decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const
   {
   verify_key_set(m_S.empty() == false);

   while(blocks >= 2)
      {
      uint32_t L0, R0, L1, R1;
      load_be(in, L0, R0, L1, R1);

      for(size_t r = 17; r != 1; r -= 2)
         {
         L0 ^= m_P[r];
         L1 ^= m_P[r];
         R0 ^= BFF(L0, m_S);
         R1 ^= BFF(L1, m_S);

         R0 ^= m_P[r-1];
         R1 ^= m_P[r-1];
         L0 ^= BFF(R0, m_S);
         L1 ^= BFF(R1, m_S);
         }

      L0 ^= m_P[1]; R0 ^= m_P[0];
      L1 ^= m_P[1]; R1 ^= m_P[0];

      store_be(out, R0, L0, R1, L1);

      in += 2*BLOCK_SIZE;
      out += 2*BLOCK_SIZE;
      blocks -= 2;
      }

   if(blocks)
      {
      uint32_t L, R;
      load_be(in, L, R);

      for(size_t r = 17; r != 1; r -= 2)
         {
         L ^= m_P[r];
         R ^= BFF(L, m_S);

         R ^= m_P[r-1];
         L ^= BFF(R, m_S);
         }

      L ^= m_P[1]; R ^= m_P[0];

      store_be(out, R, L);
      }
   }
コード例 #4
0
ファイル: mainApplet.c プロジェクト: virqin/brew_code
MainAppData* GetMainAppData()
{
	return (MainAppData*)BFF()->getData(BFF());
}