栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Android RSA密钥对生成-我应该使用标准Java / Bouncy Castle /海绵城堡/ JSch /其他吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android RSA密钥对生成-我应该使用标准Java / Bouncy Castle /海绵城堡/ JSch /其他吗?

这很复杂,但是我会尽力解释。我想我将从Java开始。我的讨论针对Java 6,我不确定Java 7中发生了什么变化。

Java的内置密码可通过Java密码扩展(JCE)获得。此扩展包含两个部分,即应用程序API和服务提供商API。应用程序API是您与之交互的部分。您使用

getInstance()
各种加密类的工厂方法。对于普通程序员而言,服务提供者方面会更加混乱。他们不在乎加密的实现方式,只是想要一些有效的方法。但是在后台,有加密货币提供程序类可以完成实际工作。如果您看一下
getInstance()
您会看到您可以根据需要指定提供程序。你为什么要呢?也许您已经为优化的RSA商业实现方式支付了$$$费用,所以您想使用它。也许某个提供商拥有您的应用程序所需的FIPS证书或其他证书。然后,您将指定该提供程序。Sun
/
Oracle将其Java环境与几个提供程序一起提供,这些提供程序一起构成了Java环境的默认提供程序集。不要太仔细地看它们,因为它们重叠并且由于历史文物而有些混乱。基本上,当使用Oracle
Java时,您要求提供诸如加密这样的加密货币
KeyPairGenerator
KeyPairGenerator.getInstance("RSA");
您将从这些提供程序之一中获取适当的类实例。

接下来,让我们看看bouncycastle。bouncycastle库由两部分组成。一个是他们独特的加密库,您在上面的#2中试验了其API。第二部分是很多粘合代码,以允许该库用作JCE的crypt提供程序。这意味着作为程序员,您可以选择如何使用Bouncycastle加密库。您可以像上面的#2中一样直接使用其API。或者,您可以使用JCE
api,但可以通过来明确指定bouncycastle实现

KeyPairGenerator kpg =KeyPairGenerator.getInstance("RSA", "BC");

如果您更喜欢直接使用唯一的bouncycastle
API(它们称为“轻量级API”),那么就不需要用于使其成为JCE提供程序的所有粘合代码。为此,bouncycastle确实提供了轻量级API类的下载。

现在,最后,我们来看一下Android的实现。Google没有许可Oracle的Java源代码,因此他们没有任何Oracle的JCE提供程序。他们必须提供自己的提供商。由于bouncycastle具有所需的所有代码,并且是开源的并获得了免费许可,因此Google
/
Android选择使用bouncycastle作为其默认JCE提供程序的基础。但是,Android并未努力为Android程序员提供独特的轻量级API。他们希望您仅通过JCE使用这些类。他们已经修改了Bouncycastle代码,以针对Android对其进行调整。他们认为您可以找到甚至使用
一些 直接在Android上使用轻量级API的事实只是其底层存在的副作用。并非一切都在那里。有人将这种情况描述为“ Android上的充气城堡已瘫痪”。

为了在Android上实际提供bouncycastle库的全功能版本,一些开发人员开发了一种称为Spongycastle库的东西。它无非就是修改了bouncycastle库,以便它可以在Android上运行。主要修改是为了更改包名称

org.bouncycastle.*
org.spongycastle.*
以防止名称空间冲突。

那你应该用什么呢?这取决于您想要做什么,您的可移植性需求是什么,您的样式偏好是什么以及您的加密技术水平是什么。通常,当您使用这些库时,您使用的加密级别相当低。您将重点放在如何做(使用RSA进行密钥传输,使用AES进行消息加密,使用HMAC-
SHA256进行消息完整性等)与做什么(我想通过电子邮件将加密的消息发送给收件人)上。类似机制)。显然,如果可以的话,您应该使用直接解决问题的高级库。这些库已经了解PKCS#1是什么,以及如何将其用作更大更完整协议的一部分。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437756.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号