Ejemplo n.º 1
0
int main()
{
    Node_t A[9] = {
        {167, "", -1},
        {62, "", -1},
        {188, "", -1},
        { -1, "00110111", -1},
        { -1, "10001000", -1},
        { -1, "11110011", -1},
        { -1, "", 0x52},
        { -1, "", 0xAC},
        { -1, "", 0xE7},
    };
    int i;
    for(i = 0; i < 9; ++i) {
        if(~A[i].dec || ~A[i].hex) {
            unsigned num ;
            if(~A[i].dec) {
                num = A[i].dec;
            } else {
                num = A[i].hex;
            }
            printf("%d\t", num);
            ShowBin(num);
            printf("\t0x%X\n", num);

        } else {
            printf("%d\t%s\t0x%X\n", ShowHex(A[i].str), A[i].str, ShowHex(A[i].str));
        }
    }
    return 0;
}
Ejemplo n.º 2
0
int main()
{
    char num1[] = "1100100101111011";
    char num2[] = "1001101110011110110101";
    ShowBin(0x39A7F8);
    putchar('\n');
    ShowHex(num1);
    putchar('\n');
    ShowBin(0xD5E4C);
    putchar('\n');
    ShowHex(num2);
    return 0;
}
Ejemplo n.º 3
0
void ShowBin(unsigned num)
{
    printf("0x%X\t", num);
    if(num == 0) {
        putchar('0');
        return;
    }
    char str[32];
    int i = 0;
    while(num) {
        str[i++] = (num & 1) + '0';
        num >>= 1;
    }
    str[i] = '\0';
    reverse(str);
    ShowHex(str);
    puts(str);
}
Ejemplo n.º 4
0
int main(void)
{
	clock_t start, finish;
	double	elapsed;

	srand(time(NULL));
	start = clock();

	printf("---------- sample1 demo ------------\n");
	printf("plain:\n");
	ShowHex(sample1_plain, sample1_plainlen);

	Encrypt(sample1_plain, sample1_plainlen, cipher, sample1_key, sample1_keylen, sample1_keyround);
	printf("cipher:\n");
	ShowHex(cipher, sample1_plainlen);

	Decrypt(cipher, sample1_plainlen, tmp, sample1_key, sample1_keylen, sample1_keyround);
	printf("recoverd plain:\n");
	ShowHex(tmp, sample1_plainlen);

	printf("---------- sample2 demo ------------\n");
	printf("plain:\n");
	ShowHex(sample2_plain, sample2_plainlen);

	Encrypt(sample2_plain, sample2_plainlen, cipher, sample2_key, sample2_keylen, sample2_keyround);
	printf("cipher:\n");
	ShowHex(cipher, sample2_plainlen);

	Decrypt(cipher, sample2_plainlen, tmp, sample2_key, sample2_keylen, sample2_keyround);
	printf("recoverd plain:\n");
	ShowHex(tmp, sample2_plainlen);

	printf("---------- sample3 demo ------------\n");
	printf("plain:\n");
	ShowHex(sample3_plain, sample3_plainlen);

	Encrypt(sample3_plain, sample3_plainlen, cipher, sample3_key, sample3_keylen, sample3_keyround);
	printf("cipher:\n");
	ShowHex(cipher, sample3_plainlen);

	Decrypt(cipher, sample3_plainlen, tmp, sample3_key, sample3_keylen, sample3_keyround);
	printf("recoverd plain:\n");
	ShowHex(tmp, sample3_plainlen);

	printf("---------- random data demo ------------\n");
#define PlainLen	32
#define KeyLen		16
#define EncRound	8
	FillRandom(key, KeyLen);
	printf("key:\n");
	ShowHex(key, KeyLen);

	FillRandom(plain, PlainLen);
	printf("plain:\n");
	ShowHex(plain, PlainLen);

	Encrypt(plain, PlainLen, cipher, key, KeyLen, EncRound);
	printf("cipher:\n");
	ShowHex(cipher, PlainLen);

	Decrypt(cipher, PlainLen, tmp, key, KeyLen, EncRound);
	printf("recoverd plain:\n");
	ShowHex(tmp, PlainLen);

	finish = clock();
	elapsed = (double) (finish - start) / CLOCKS_PER_SEC;
	printf("Elapsed Time %lf s\n", elapsed);
	return 0;
}
Ejemplo n.º 5
0
int main(int argc, char* argv[])
{
	const char* dbname;
	const char* verifykey = NULL;
	union {
		unsigned char buf[64];
		uint256_t hash;
	};
	std::vector<node_t> nodes;
	std::vector<node_t>::const_iterator it;
	int idx, cnt, pos;
	int mode = MODE_ROOT;
	char *ptr;
	DB* db;

	if(argc<2) {
		fprintf(stderr, "Usage: %s <dbname> [key=verifier key] [<position>|<hash>|root|dump|gendata]\n", argv[0]);
		return 0;
	}

	dbname = argv[1];

	for(idx=2; idx<argc; ++idx) {
		if(!strncmp(argv[idx], "key=", 4)) {
			verifykey = argv[idx] + 4;
		} else if(!strcmp(argv[idx], "dump")) {
			mode = MODE_DUMP;
		} else if(!strcmp(argv[idx], "root")) {
			mode = MODE_ROOT;
		} else if(!strcmp(argv[idx], "gendata")) {
			mode = MODE_GENTESTDATA;
		} else if(sizeof(uint256_t)*2==strlen(argv[idx])) {
			if(!HexData(argv[idx], buf, sizeof(buf))) {
				fprintf(stderr, "Invalid hash value: %s\n", argv[idx]);
				return 0;
			}
			mode = MODE_HASH;
		} else if(argv[idx][0]>='0' && argv[idx][0]<='9') {
			pos = strtol(argv[idx], &ptr, 10);
			if(ptr && *ptr) {
				fprintf(stderr, "Invalid position value: %s\n", argv[idx]);
				return 0;
			}
			mode = MODE_POSITION;
		} else {
			fprintf(stderr, "Unknown option: %s\n", argv[idx]);
			return 0;
		}
	}

	if(MODE_GENTESTDATA==mode) {
		if(!GenTestData(dbname))
			fprintf(stderr, "Error generating data\n");
	}

	db = new DB(dbname, verifykey);
	if(!db->Open()) {
		fprintf(stderr, "Open DB failed\n");
		delete(db);
		return 0;
	}

	switch(mode) {
	case MODE_HASH:
		if(db->GetNodes(hash, nodes)) {
			idx = 0;
			for(idx=0,it=nodes.begin(); idx<nodes.size(); idx+=2) {
				fprintf(stdout, "%d: ", idx/2);
				if(idx+1<nodes.size()) {
					ShowHex(it->hash, sizeof(it->hash), false);
					++it;
					fprintf(stdout, " / ");
				}
				ShowHex(it->hash, sizeof(it->hash), true);
				++it;
			}
		} else
			fprintf(stderr, "Hash not found\n");

		break;
	case MODE_POSITION:
		if(db->GetNodes(pos, nodes)) {
			idx = 0;
			for(idx=0,it=nodes.begin(); idx<nodes.size(); idx+=2) {
				fprintf(stdout, "%d: ", idx/2);
				if(idx+1<nodes.size()) {
					ShowHex(it->hash, sizeof(it->hash), false);
					++it;
					fprintf(stdout, " / ");
				}
				ShowHex(it->hash, sizeof(it->hash), true);
				++it;
			}
		} else
			fprintf(stderr, "Error reading tree\n");

		break;
	case MODE_ROOT:
		if(db->GetRoot(nodes)) {
			fprintf(stdout, "Root %ld: ", nodes[2].data.value);
			ShowHex(nodes[2].hash, sizeof(nodes[2].hash), true);
			fprintf(stdout, "Hashes: ");
			ShowHex(nodes[0].hash, sizeof(nodes[0].hash), false);
			fprintf(stdout, " / ");
			ShowHex(nodes[1].hash, sizeof(nodes[1].hash), true);
		} else
			fprintf(stderr, "Error reading tree\n");

		break;
	case MODE_DUMP:
		if(!db->Dump())
			fprintf(stderr, "Error reading tree\n");
		break;
	}

	return 1;
}