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; }
int main() { char num1[] = "1100100101111011"; char num2[] = "1001101110011110110101"; ShowBin(0x39A7F8); putchar('\n'); ShowHex(num1); putchar('\n'); ShowBin(0xD5E4C); putchar('\n'); ShowHex(num2); return 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); }
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; }
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; }