学习网站建设需要什么,南京网站搭建公司,wordpress图片如何存储,iis 网站无法访问关注微信号#xff1a;javalearns 随时随地学Java 或扫一扫 随时随地学Java 越来越多的黑客盯上了移动应用#xff0c;每天都会增加#xff0c;因为移动应用中有黑客感兴趣的东西#xff0c;如用户数据。硬编码#xff08;Hard-coded#xff0c;注#xff0c;固定写死… 关注微信号javalearns 随时随地学Java 或扫一扫 随时随地学Java 越来越多的黑客盯上了移动应用每天都会增加因为移动应用中有黑客感兴趣的东西如用户数据。硬编码Hard-coded注固定写死不能修改的安全秘钥SD 卡中以明文存放的个人信息数据库中未加密存储的用户名和密码收集的分析analytics并以明文方式发到远程服务器这些情况都使得攻击更容易得手。 正确使用Cryptography 工具能保护我们的敏感数据确保隐私和数据完整。另一方面,加密难用且容易误用 cryptography is hard to use and easy to misuse。 注意容易被破解的加密方式broken cryptography (如使用不安全算法或硬编码秘钥到二进制包请查阅列表2014年移动领域10大风险。因此从中得到什么教训不用加密不可取不能正确加密同样不可取 (不提耗费的时间)。 为了能在安卓平台上开发出安全的应用接下来我们将介绍如何能既简单又安全地进行加密。 首先概括性地介绍一些常见的可集成到安卓应用中的加密库。加密库是包含诸如加密算法、填充方式和散列函数等工具的加密工具集合。 Bouncy Castle 充气城堡军团Legion of the Bouncy Castle是一个来自澳大利亚的慈善团体他们编写了Bouncy Castle 这个广泛使用的类库。该库既提供了一个轻量级的密码学 API也是一个 Java 密码扩展JCE的提供者。安卓平台已经内置了一个精简过的老版本 Bouncy Castle同时为了适配安卓平台也做了一些细小的改动。结果就是任何在应用程序中构建和使用最新版本 BouncyCastle 类库的尝试都将导致类加载冲突。 Spongy Castle Spongy Castle 背后的动机是允许安卓开发者在应用程序中使用任意版本的 BouncyCastle 类库。SpongyCastle 就是对最新版本的 BouncyCastle 进行了简单地重新打包所有的 org.bouncycastle.* 包重命名为了 org.spongycastle.*所有 Java安全 API 提供者的名字由 BC 改为了 SC。 OpenSSL OpenSSL 是一个实现了 SSL 和 TLS 协议以及通用密码库的开源工具包。OpenSSL 已经被移植到了很多平台包括安卓。做为一个替代方案你也可以从源码构建使用安卓 NDK然后绑定到应用程序中。 现在我们假设出于应用程序的目的你想要加密一些数据。你会使用哪个加密算法AES 还是 DES你的秘钥多长128 还是 256 比特你会使用哪种加密模式ECB 还是 CBC如果你对所有这些问题都没有答案也没有好的理由那么你可能发现你正处在一个微妙的位置虽然你拥有所有你想要的工具但是你一点儿都不确定使用哪个、如何使用。 这正是傻瓜密码学工具包发挥作用的场景。这些工具包并没有实现任何奇特的加密功能也没有尝试替代任一上述的密码学库相反它们基于这些类库构建唯一的目的是使得使用加密功能更简单更安全。 与通用密码学库相反这些工具包通常只支持一部分算法、模式、结构、参数。对于通用加密工具需要设定的部分这些工具包为你提供了合理的默认值以防你知道想要什么但是不知道如何使用或者只在乎最终有个安全的解决方案。让我们检查几个这类工具包以便来更好的理解它们的运行规则。 Keyczar Keyczar 是一组开源工具包最初由两位 Google Security Team谷歌安全团队成员开发。 它用 JavaPython 和 C 语言实现。它支持对称加密和费堆成加密两种鉴权方式。Keyczar 提供安全的默认设定包括算法秘钥长度和模式秘钥循环和版本化初始向量vector和授权码自动生成支持国际化。该工具包基于JCE构建,( here)使用了Spongy Castle的安全提供程序。 AeroGear Crypto AeroGear Crypto 是 AeroGear 提供的一个小的 Java 库。 它支持可认证的对称加密椭圆曲线加密基于密码的秘钥推导。它也提供了算法的显式设定。AeroGear Crypto 在 android 平台依赖Spongy Castle在其他平台上依赖 Bouncy Castle。该库在 iOSWindows Phone 和 Cordova 上同样可用。 Conceal 为了能够快速并使用很少内存对SD卡上的大型文件实现加密和认证脸谱开发出了 Conceal。Conceal既可以进行认证也可以进行加密同时默认也提供了密钥管理功能。它使用的是 OpenSSL不过仅包含自己需要的那部分因此其大小仅为 85KB。Conceal 站点上公布的结果显示它优于 Bouncy Castle。 下表对上面所介绍的加密库做了总结。请注意上面介绍的所有的库可以让加密方面的新手安全地进行加密不过高级开发人员可以不使用这些默认做法可以按照自己的意愿指定所有的加密细节就像他们在使用其他加密库那样。 加密库 开发公司 许可证 AeroGear Crypto AeroGear Apache 2.0 Conceal Facebook BSD Keyczar – Apache 2.0 总结To sum up 如果你是一个移动应用开发者你得花时间精力使你的应用程序便于使用功能丰富抓人眼球但是你不要忘了改善你应用的安全性。 如果你不懂怎么着手或者担心做不对那就从文中提到的工具包中选择一个以便能够开始。不管你决定选用哪个加密工具都好都应避免自己实现加密算法和加密协议 应该只使用那些广泛应用的普遍认可的经受考验的算法和协议。 .................... 【.........阅读全文】 Java免费学习 Java自学网 http://www.javalearns.com 关注微信号javalearns 随时随地学Java 或扫一扫 随时随地学Java