0

Android AWS SDK 中没有 KMS 加密方法。在服务器端我们KMSEncryptionMaterialsProvider用来创建AmazonS3EncryptionClient对象,但是这个类在 Android SDK 中不可用。我尝试在我的 Android 项目中使用 Java SDK,但它引发了异常

代码:

KMSEncryptionMaterialsProvider materialProvider = new KMSEncryptionMaterialsProvider(kms_cmk_id);
encryptionClient = new AmazonS3EncryptionClient(new ProfileCredentialsProvider(), materialProvider,
                new CryptoConfiguration())
            .withRegion(Region.getRegion(Regions.US_WEST_2));

例外

引起:java.lang.ClassNotFoundException:在路径上找不到类“javax.management.MBeanServerFactory”:DexPathList

4

1 回答 1

1

对的,这是可能的。我会给你三个选择,但所有这些都需要让你的手更脏一些。

选项 1:您可以派生自己的 KMS 加密材料提供程序实现。尽管 AWS Android SDK 中不存在该特定类(可能还有它的一些依赖项),但您在 SDK 上拥有所需的接口:EncryptionMaterialsProvider。应该可以基于此实现您自己的提供程序。

选项 2:使用 Android SDK 中提供的 KMS 客户端从 KMS 中检索您自己的加密材料,然后将StaticEncryptionMaterialsProvider传递给 S3 客户端。

选项 3:自己处理加密/解密。从技术上讲,您可以使用 KMS 客户端检索加密材料,然后按照官方文档中的 KMS 指南对您的数据进行加密/解密。如果您对密码学感到满意,请执行此操作。

于 2017-03-16T14:49:19.710 回答