我可以在Android中使用AWS KMS加密进行客户端加密吗?

时间:2017-02-13 10:35:10

标签: android amazon-web-services amazon-s3 amazon-kms

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

1 个答案:

答案 0 :(得分:1)

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

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

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

选项3:自己处理加密/解密。您可以在技术上使用KMS客户端检索加密材料,然后按照official documentation上的KMS指南加密/解密您的数据。如果您对加密技术感到满意,请这样做。