编译truecrypt for android
作者:金海建
Truecrypt介绍:TrueCrypt是一款免费开源的绿色虚拟加密盘加密软件,不需要生成任何文件即可在硬盘上建立虚拟磁盘,用户可以按照盘符进行访问,所有虚拟磁盘上的文件都被自动加密,需要通过密码来进行访问。TrueCrypt 提供多种加密算法,包括:AES-256, Blowfish (448-bit key), CAST5, Serpent, Triple DES, and Twofish,其他特性还有支持FAT32和NTFS分区、隐藏卷标、热键启动等。他支持多个平台,Windows、linux、Unix、MacOSX等主流操作系统。
一、下载truecrypt
到truecrypt网站上下载即可。下载地址:http://www.truecrypt.org/downloads2
选择Mac OS X/Linux(.tar.gz), 点击Download下载到本地。
二、编译truecrypt
要编译在arm linux上,需要确保你的linux有arm-linux的交叉编译环境。如果没有需要下载arm linux的交叉编译器,关于如何下载交叉编译器,可以直接google下就可以找到相应的资料。
编译truecrypt需要确认已经有fuse和wxWidget,一般情况下,wxWidget已经在系统中存在了。
truecrypt要用到fuse库,fuse指用户空间文件系统(Filesystem in Userspace,簡稱FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如ZFS,glusterfs和luster使用FUSE实现。
Linux用于支持用户空间文件系统的内核模块名叫FUSE,FUSE一词有时特指Linux下的用户空间文件系统。文件系统是一个通用操作系统重要的组成部分。传统上操作系统在内核层面上对文件系统提供支持。而通常内核态的代码难以调试,生产率较低。Linux从2.6.14版本开始通过FUSE模块支持在用户空间实现文件系统。
2.1编译FUSE
l 下载FUSE: http://sourceforge.net/projects/fuse/
l 对下载后的文件,进行解压缩。
l 编译:
./configure CC=arm-none-linux-gnueabi-gcc -host=arm-linux –enable-static_link
Make
make install
完成make install后,会放到系统的库中去,truecrypt就可以引用了。
关于如何调用fuse,请参考”使用FUSE开发自己的文件系统http://www.ibm.com/developerworks/cn/linux/l-fuse/
2.2编译truecrypt
准备好arm linux交叉编译环境后,原来truecrypt默认指向的是系统的编译环境,即x86下的编译环境,我们需要修改Makefile,来指向arm linux。打开truecrypt 下的Make file.我们可以看到
export CC ?= gcc
export CXX ?= g++
truecrypt的Makefile已经为我们准备好了修改编译配置的选项。我们修改为
#export CC ?= gcc
export CC := arm-none-linux-gnueabi-gcc
#export CXX ?= g++
export CXX := arm-none-linux-gnueabi-g++
#export AS := nasm
好了,Makefile已经配置OK, 直接make就可以编译出arm linux的truecrypt了。
Truecrypt 是带GUI的程序,使用wxWidgets库,那么我们如果要把编译出来truecrypt push到android上肯定是不行运行的。它里面调用了wxWidget的库,很显然android上不支持。那我们只能把所有有关gui的代码都去掉。truecrypt的代码写的还比较的清晰,直接把Main下面的代码全部删除。然后自己把创建加密分区、加载加密分区、修改密码的相关代码抽取出来,做下封装。