1.TrueCrypt Format创建加密卷
按照TrueCrypt Format创建加密卷的向导,一共会出现加密卷位置,加密算法、加密卷大小、加密卷密码、加密卷格式化等几个步骤,之后就会创建加密卷,创建完的加密卷就是制定的加密卷位置的那个文件了。
TrueCrypt项目中TCFormatVolume具体参数:
typedef struct
{
BOOL bDevice;
BOOL hiddenVol;
char *volumePath;
unsigned __int64 size;
unsigned __int64 hiddenVolHostSize;
int ea;
int pkcs5;
uint32 headerFlags;
int fileSystem;
int clusterSize;
BOOL sparseFileSwitch;
BOOL quickFormat;
int sectorSize;
int *realClusterSize;
Password *password;
HWND hwndDlg;
}
FORMAT_VOL_PARAMETERS;
int TCFormatVolume (volatile FORMAT_VOL_PARAMETERS *volParams)
{...}
参数 | 类型 | 含义 | 示例 |
bDevice | BOOL | 是否是一个分区卷 | FALSE |
hiddenVol | BOOL | 是否是隐藏卷 | FALSE |
volumePath | char * | 用户选择的加密卷文件 | C://1.txt |
size | unsigned __int64 | 加密卷大小(以byte为单位) | 10*1024*1024 |
hiddenVolHostSize | unsigned __int64 | 隐藏加密卷大小(以byte为单位) | 0 |
ea | int | 默认加密的算法 | 1 |
pkcs5 | int | 哈希算法 | DEFAULT_HASH_ALGORITHM |
headerFlags | uint32 | 0 | |
fileSystem | int | 文件系统 | FILESYS_FAT |
clusterSize | int | 0 | |
sparseFileSwitch | BOOL | TRUE | |
quickFormat | BOOL | 是否是快速格式化 | FALSE |
sectorSize | int | 512 | |
realClusterSize | int | 512 | |
password | Password | 用户输入的密码 | 123 |
hwndDlg | HWND | 传入的窗口句柄 | NULL |
2.实际调用
int __cdecl volTransformThreadFunctionTest (char *fileUrl,char *Pword,int size)
{
Randinit();
volatile FORMAT_VOL_PARAMETERS *volParams = (FORMAT_VOL_PARAMETERS *) malloc (sizeof(FORMAT_VOL_PARAMETERS));
//char * fileUrl = "C:\\Users\\Administrator\\Pictures\\1.bat";
int nSize = 512;
//char * Pword = "123";
Password pWord;
strcpy((char *)pWord.Text,Pword);
//pWord.Length = strlen(Pword);
pWord.Length = strlen((char *)pWord.Text);
volParams->bDevice = false;
volParams->hiddenVol = false;
volParams->volumePath = fileUrl;
volParams->size = size;
volParams->hiddenVolHostSize = 0;
volParams->ea = 1;
volParams->pkcs5 = DEFAULT_HASH_ALGORITHM;
volParams->headerFlags = CreatingHiddenSysVol() ? TC_HEADER_FLAG_ENCRYPTED_SYSTEM : 0;
volParams->fileSystem = 1;
volParams->clusterSize = 0;
volParams->sparseFileSwitch = true;
volParams->quickFormat = false;
volParams->sectorSize = GetFormatSectorSize();
volParams->realClusterSize = &nSize;
volParams->password = &pWord;
volParams->hwndDlg = NULL;
int nStatus = TCFormatVolume (volParams);
return nStatus;
}
函数结果:
结果 | 含义 |
---|---|
0 | 成功 |
1 | 操作系统错误 |
2 | 内存溢出 |
3 | 密码错误 |
4 | 卷格式损坏 |
5 | 不被发现 |
6 | 文件已打开 |
7 | 卷的大小错误 |
8 | 不支持压缩 |
9 | 密码类型错误 |
10 | 密码更改卷的版本错误 |
11 | 找不到卷 |
12 | 写入卷错误 |
13 | 文件被锁 |
14 | 文件正在被使用 |
15 | 驱动程序版本错误 |
16 | 需要新版本 |
17 | 密码初始化失败 |
18 | 弱密钥初始化 |
19 | 自行测试失败 |
20 | 扇区大小不兼容 |
21 | 卷已安装 |
22 | 没有免费的驱动器 |
23 | 文件打开失败 |
24 | 卷装入失败 |
25 | 反对无效的设备 |
26 | 拒绝访问 |
27 | 模式初始化失败 |
28 | 不报告 |
29 | 加密没有完成 |
30 | 参数不正确 |
31 | 系统hidvol头reenc模式错误 |
32 | 非系统电子海图不完全到位 |
33 | 用户中止 |
注:Fat32格式化的磁盘内,fileUrl参数文件大小不能超过4G。