BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 李彬 关注 1 他的粉丝 发布于 2014年1月30日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

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

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

上图中的基准测试,展示了在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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT