第四部分、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; }