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

本文介绍如何使用TrueCrypt的API来更改加密卷的密码,并提供了一个具体的实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

 

  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

      下面我们来看具体的实例

 

  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. }    
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值