한 걸음씩..

[MFC] 다이어리 본문

프로그래밍

[MFC] 다이어리

smdy0426 2011. 10. 17. 15:44
반응형

* 개발환경

 - VC2008

 

* 기능

 - 회원가입, 비빌번호변경, 날짜별 일기쓰기, 지난일기 불러오기, 데이터 수정저장, 암호화,복호화

 

* 기억해둘 함수

 - 오늘의 날짜 받아오는 함수

void DlgDiary::DateUpdate()
{
 SYSTEMTIME st;
 CString Date;
 GetLocalTime(&st);
 char y[5],m[3],d[3];
 int year = st.wYear;
 int month = st.wMonth;  //오늘의 날짜 받아오는 함수
 int day = st.wDay;
 _itoa_s(year,y,5,10);
 _itoa_s(month,m,3,10);
 _itoa_s(day,d,3,10);
 Date = y;
 Date = Date +"-"+ m;
 Date = Date +"-"+ d;
 m_strDate = Date;
 UpdateData(FALSE);
}

 

 - ListCtrl 칼럼띄우기

void DlgDiary::Column()
{
 LV_COLUMN lvcolumn;
 char *list[2]={"날짜","제목"};   //칼럼띄우기
 int width[2] = {100,390};
 for(int k=0;k<2;k++)
 {
  lvcolumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH;
  lvcolumn.fmt = LVCFMT_LEFT;
  lvcolumn.pszText = list[k];
  lvcolumn.iSubItem = k;
  lvcolumn.cx = width[k];
  m_ctrListctrl.InsertColumn(k,&lvcolumn);
 }
}

 

 - Cfile 저장

 CreateDirectory("c:\\DiaryData",NULL);

 if(f.FindFile("c:\\DiaryData\\DiaryData.Did")!=0)
 {
  file.Open("c:\\DiaryData\\DiaryData.Did",CFile::modeWrite | CFile::modeNoTruncate | CFile::typeBinary);
  file.SeekToEnd();

  file.Write(p_diary,sizeof(Diary));  //데이터 입력받은것들 파일로 저장
  AfxMessageBox("저장 완료");
  file.Close();

 

 - 암호화,복호화

void DlgDiary::Crypt()
{

 DWORD DiaryLen = (DWORD)sizeof(Diary);


    if(!CryptAcquireContext(&hProv, NULL, MS_ENHANCED_PROV,PROV_RSA_FULL, 0)) 

   // CSP(Crystographic Service Provider) 핸들 얻기
    {

        if(!CryptAcquireContext(&hProv, NULL, MS_ENHANCED_PROV,PROV_RSA_FULL, CRYPT_NEWKEYSET))

   // 유저용 키 컨테이너 만들기
        {
   AfxMessageBox("User Key 컨테이너 만들기 에러\n");       
        }
    }

 CryptCreateHash(hProv, CALG_SHA, 0, 0, &hHash);   // 해쉬 만들기

 CryptHashData(hHash, (BYTE*)MY_PASS, (DWORD)strlen(MY_PASS), 0);    // 해쉬 값 계산


 CryptDeriveKey(hProv, CALG_RC4, hHash, KeyLen, &hKey);// 키 만들기

 CryptEncrypt(hKey, 0, TRUE, 0, (BYTE*)p_diary, &DiaryLen,sizeof(Diary));    // 암호화

 CryptDestroyHash(hHash);    // 해쉬 없애기

 CryptReleaseContext(hProv, 0);    // CSP 핸들 풀어주기
}

 

P.S 스킨 씌운건........연습용이니까 뭐라마시길..

c:\\DiaryData 폴더에 회원목록파일과 Diary데이터가 암호화되어 저장

혹시 삭제할일이 있다면 이 폴더를 지워주세요
  

Diary.exe

반응형

'프로그래밍' 카테고리의 다른 글

htoi  (0) 2011.10.17
주석 제거 함수  (0) 2011.10.17
[MFC] 최단거리 알고리즘  (0) 2011.10.17
[MFC] Image 아이콘추출  (0) 2011.10.17
[MFC] AAC Encoder  (2) 2011.10.17