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

    技术2025-08-09  10

     

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

     

     

    最新回复(0)