TrueCrypt原理与系统开发(4):TrueCrypt Mount更改加密卷密码

第四部分、TrueCrypt Mount更改加密卷密码

      在实际的应用中,TrueCrypt可以很好地与业务系统相结合,比如,为不同的用户创建各自的加密卷,用户登录业务系统即加载各自的虚拟磁盘,那么面对业务系统中平常的修改密码操作,TrueCrypt也能够应付自如。

      在TrueCrypt中,提供了修改加密卷密码的接口,该函数在TrueCrypt中的原型是

 

[cpp:nogutter]  view plain copy
  1. int ChangePwd (char *lpszVolume,     
  2.                Password *oldPassword,     
  3.                Password *newPassword,     
  4.                int pkcs5,     
  5.                HWND hwndDlg);    
 

 

      下面我们来看下每个参数具体的含义

 参数  类型  含义  示例
 lpszVolume  char *  加密卷文件  NULL
 oldPassword  Password  原密码  
 newPassword  Password  新密码  
 pkcs5  int  哈希算法  0
 hwndDlg  HWND  传入的窗口句柄  NULL

      下面我们来看具体的实例

 

[cpp:nogutter]  view plain copy
  1. int ChangePassword(char* szFile, char* szoldPassword, char* sznewPassowrd, HWND hwndDlg)    
  2. {    
  3.     char szFileName[TC_MAX_PATH+1];    
  4.     int nStatus;    
  5.     Password oldPassword;    
  6.     Password newPassword;    
  7.     int pkcs5;    
  8.     strcpy(szFileName, szFile);    
  9.     szFileName[strlen(szFile)] = 0;    
  10.     strcpy(oldPassword.Text, szoldPassword);    
  11.     oldPassword.Length = strlen (oldPassword.Text);    
  12.     strcpy(newPassword.Text, sznewPassowrd);    
  13.     newPassword.Length = strlen (newPassword.Text);    
  14.     pkcs5 = 0;    
  15.     nStatus = ChangePwd (szFileName, &oldPassword, &newPassword, pkcs5, hwndDlg);    
  16.     if (nStatus == ERR_OS_ERROR    
  17.         && GetLastError () == ERROR_ACCESS_DENIED    
  18.         && IsUacSupported ()    
  19.         && IsVolumeDeviceHosted (szFileName))    
  20.     {    
  21.         WaitCursor ();    
  22.         nStatus = UacChangePwd (szFileName, &oldPassword, &newPassword, pkcs5, hwndDlg);    
  23.         NormalCursor ();    
  24.     }    
  25.     burn (&oldPassword, sizeof (oldPassword));    
  26.     burn (&newPassword, sizeof (newPassword));    
  27.     if (nStatus == 0)    
  28.     {    
  29.         return 1;    
  30.     }    
  31.     return 0;    
  32. }    
 

你可能感兴趣的:(加密,算法,null,Access,Path,磁盘)