git.sophuwu.com > otpp   
              42
            
             #include <fstream>

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]);
    }
}