编译truecrypt for android

来源:互联网 发布:java 转义字符 处理 编辑:程序博客网 时间:2024/05/21 11:35

编译truecrypt for android

作者:金海建

Truecrypt介绍:TrueCrypt是一款免费开源的绿色虚拟加密盘加密软件,不需要生成任何文件即可在硬盘上建立虚拟磁盘,用户可以按照盘符进行访问,所有虚拟磁盘上的文件都被自动加密,需要通过密码来进行访问。TrueCrypt提供多种加密算法,包括:AES-256, Blowfish (448-bit key), CAST5, Serpent, Triple DES, andTwofish,其他特性还有支持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的交叉编译环境。如果没有需要下载armlinux的交叉编译器,关于如何下载交叉编译器,可以直接google下就可以找到相应的资料。

编译truecrypt需要确认已经有fuse和wxWidget,一般情况下,wxWidget已经在系统中存在了。

truecrypt要用到fuse库,fuse指用户空间文件系统(Filesystemin Userspace,簡稱FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如ZFSglusterfsluster使用FUSE实现。

Linux用于支持用户空间文件系统的内核模块名叫FUSE,FUSE一词有时特指Linux下的用户空间文件系统。文件系统是一个通用操作系统重要的组成部分。传统上操作系统在内核层面上对文件系统提供支持。而通常内核态的代码难以调试,生产率较低。Linux2.6.14版本开始通过FUSE模块支持在用户空间实现文件系统。

2.1编译FUSE

l 下载FUSE: http://sourceforge.net/projects/fuse/

l 对下载后的文件,进行解压缩。

l 编译:

./configureCC=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

exportCC := arm-none-linux-gnueabi-gcc

#exportCXX ?= g++

exportCXX := arm-none-linux-gnueabi-g++

#exportAS := nasm

 

好了,Makefile已经配置OK, 直接make就可以编译出arm linuxtruecrypt了。

Truecrypt是带GUI的程序,使用wxWidgets库,那么我们如果要把编译出来truecrypt pushandroid上肯定是不行运行的。它里面调用了wxWidget的库,很显然android上不支持。那我们只能把所有有关gui的代码都去掉。truecrypt的代码写的还比较的清晰,直接把Main下面的代码全部删除。然后自己把创建加密分区、加载加密分区、修改密码的相关代码抽取出来,做下封装。