#include const char* chars16 = "0123456789ABCDEF"; struct secret { char bytes[16]; void load(char* file) { FILE* f = fopen(file, "r"); fread(secret, 1, 16, f); fclose(f); } void save(char* file) { FILE* f = fopen(file, "w"); fwrite(secret, 1, 16, f); fclose(f); } void generate() { int r, i, j; for (i = 0; i < 16; i += 4) { r = rand(); for (j = 0; j < 4; j++) { bytes[i + j] = r & 255; r >>= 8; } } } }; stuct otp { }; int main() { secret s; s.generate(); for (int i = 0; i < 16; i++) { printf("%c%c", chars16[s.bytes[i] >> 4], chars16[s.bytes[i] & 15]); } }