저는 변경할 수없는 기본 메커니즘 인 암호화 라이브러리를 사용하는 일부 소프트웨어를 개발 중입니다. 프로그램을 실행하면 공개 키와 개인 키를 생성하는 데 약 10 분이 걸리고 소프트웨어의 다른 부분을 디버깅 할 때 매우 실망 스럽습니다. 키를 파일에 쓰고 시간을 절약하기 위해 다시 읽으 려합니다. Enc_Key_T
이 typedef void* Enc_Key_T
void 포인터의 데이터를 파일에 쓰기
내가 읽고 다음과 키를 쓰기를 시도하는 데 사용한 코드로 정의된다
Enc_Key_T secKey = nullptr;
가 (단지 쓰기를 시도 :
그들은 키는 무효 포인터 지금까지 비밀 키) :
#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 선언을 보여주지 않으면 도움이되지 않습니다. –