在Android上使用Facebook Concel对文件加密

Facebook将它的Conceal转为开源项目。Conceal是一套用于Android上的文件加密和鉴权的Java API,它使用OpenSSL算法的子集以及一些预先定义的选项,以便让库保持在较小的体积——目前仅有85KB大小。

对于比较古老的Android设备——从Froyo到Jelly Bean——据Facebook表示,该库在这些设备上的性能要优于Android提供的原生支持。

在Android上使用Facebook Concel对文件加密_第1张图片

上图中的基准测试,展示了在Galaxy Y终端上,对原生Android算法(ES-CTR-HMAC-SHA1)、Bouncycastle((AES-GCM)和Concea进行对比的结果l。

Google在KitKat中引入了对OpenSSL的支持,但是其中使用的默认密码流则“表现差强人意”——在Facebook看来,“当使用我们的密码流(参阅BetterCipherInputStream.java文件)来替换它时,将使得默认实现能够与Conceal相媲美。”

以下代码片段展现了如何使用Conceal对文件进行加密:

//使用秘钥链和原生库的默认实现,来创建一个新的加密对象
Crypto crypto = new Crypto(
  new SharedPrefsBackedKeyChain(context),
  new SystemNativeCryptoLibrary());

//检查加密功能是否可用
//如果Android没有正确载入库,则此步骤可能失败
if (!crypto.isAvailable()) {
  return;
}

OutputStream fileStream = new BufferedOutputStream(
  new FileOutputStream(file));

//创建输出流,当数据写入流的时候进行加密,并将加密后的数据输出到文件
OutputStream outputStream = crypto.getCipherOutputStream(
  fileStream,
  entity);

//将纯文本写入其中
outputStream.write(plainText);
outputStream.close();

Conceal可以用来加密大型文件,Facebook用它来加密手机/平板电脑SD卡中的数据和图片。

在Conceal的GitHub页面上,还提供了基于OpenSSL构建相似库的指南。

查看英文原文:Encrypting Files on Android with Facebook Conceal

你可能感兴趣的:(在Android上使用Facebook Concel对文件加密)