我正在研究一些使用加密庫的軟件,這是我無法更改的基礎機制。當程序運行時,大約需要10分鐘的時間來生成公鑰和私鑰,這在嘗試調試軟件的其他部分時非常令人沮喪。我想將密鑰寫入一個文件並讀回來以節省時間。將虛擬指針的數據寫入文件
這些鍵是空指針:
Enc_Key_T secKey = nullptr;
凡Enc_Key_T
被定義爲typedef void* Enc_Key_T
我已經習慣了嘗試讀取和寫入密鑰是如下的代碼(僅試圖寫目前爲止的祕密密鑰):
#ifdef WriteKey
generate_Keys(parameters, &sec_key, &prv_key);
FILE * pFile;
pFile = fopen("sk.bin", "wb");
fwrite(&sec_key, sizeof(Enc_Key_T), sizeof(&sec_key), pFile);
fclose(pFile);
#else
FILE * pFile;
long lSize;
char * buffer;
pFile = fopen("sk.bin", "rb");
if(pFile == NULL)
fileError();
fseek (pFile, 0 , SEEK_END);
lsize = ftell (pFile);
rewind (pFile);
buffer = (char *) malloc (sizeof(char)*lSize);
if(buffer == NULL)
memError();
sec_key = (void *) fread(buffer, 1, lSize, pFile);
fclose(pFile);
free(buffer);
#endif
當我編寫文件時,它出現爲64但是在密鑰指針中讀回它被設置爲一個低值內存地址,這讓我覺得我做錯了什麼。我找不到任何可以做到的例子。我甚至不確定它是否可以,因爲我不會創建任何下層結構,所以我只是試圖在由指針提供的位置分配一些內存。
無論如何,這可以完成,而無需觸摸生成密鑰的底層庫?
至少'sizeof(&sec_key)'這是錯誤的。它應該是'sizeof(sec_key)'。 –
您必須瞭解密鑰的存儲方式。現在,你正在試圖複製一些只知道它在哪裏的東西。但是,如何複製一張紙與複製聲音的方式不同。你需要確切地知道*複製它的是什麼,而不僅僅是在哪裏。 –
請告訴我'Enc_Key_T'的類型是一個類或結構還是什麼?如果你有它,你可以發佈它的聲明嗎? sizeof將不會對你有任何幫助,除非你向我展示Enc_Key_T –