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

 

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

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

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

 

int ChangePwd (char *lpszVolume, Password *oldPassword, Password *newPassword, int pkcs5, HWND hwndDlg);  

 

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

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

      下面我们来看具体的实例

 

int ChangePassword(char* szFile, char* szoldPassword, char* sznewPassowrd, HWND hwndDlg) { char szFileName[TC_MAX_PATH+1]; int nStatus; Password oldPassword; Password newPassword; int pkcs5; strcpy(szFileName, szFile); szFileName[strlen(szFile)] = 0; strcpy(oldPassword.Text, szoldPassword); oldPassword.Length = strlen (oldPassword.Text); strcpy(newPassword.Text, sznewPassowrd); newPassword.Length = strlen (newPassword.Text); pkcs5 = 0; nStatus = ChangePwd (szFileName, &oldPassword, &newPassword, pkcs5, hwndDlg); if (nStatus == ERR_OS_ERROR && GetLastError () == ERROR_ACCESS_DENIED && IsUacSupported () && IsVolumeDeviceHosted (szFileName)) { WaitCursor (); nStatus = UacChangePwd (szFileName, &oldPassword, &newPassword, pkcs5, hwndDlg); NormalCursor (); } burn (&oldPassword, sizeof (oldPassword)); burn (&newPassword, sizeof (newPassword)); if (nStatus == 0) { return 1; } return 0; }  

 

 

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